Cette question est très proche de Réglage du numéro de version pour .NET de Base des projets, mais pas la même. À l'aide de la dernière version stable de .NET de Base au moment de la rédaction (1.1) et VS2017, .NET de Base a changé à partir de JSON en fonction des fichiers de projet pour CSPROJ fichiers.
Donc, ce que je suis en train de faire c'est de créer un environnement CI où je voudrais être en mesure de modifier quelque chose avant un build pour mon timbre construit avec le numéro de version correct.
Si j'utilise les attributs, les vieux (SharedAssemblyInfo.cs truc):
[assembly: AssemblyFileVersion("3.3.3.3")]
[assembly: AssemblyVersion("4.4.4.4")]
quelque part dans le projet, j'obtiensCS0579 - Duplicate 'System.Reflection.AssemblyFileVersionAttribute'
etCS0579 - Duplicate 'System.Reflection.AssemblyVersionAttribute'
erreurs lors de la construction.
Lorsque creusant un peu, je trouve qu'il y a un fichier qui ressemble à ça générés pendant le processus de génération (il n'existe pas avant que je build) en \obj\Debug\netcoreapp1.1
:
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("TestApplication")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyDescriptionAttribute("Package Description")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.1.99.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.1.99")]
[assembly: System.Reflection.AssemblyProductAttribute("TestApplication")]
[assembly: System.Reflection.AssemblyTitleAttribute("TestApplication")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.1.99.0")]
// Generated by the MSBuild WriteCodeFragment class.
Question - Comment dois-je faire ce peu?
Je vois donc qu'il faut en quelque sorte être généré à partir des valeurs saisies dans les propriétés du projet 'l'ensemble de la page, mais je ne sais pas quelle est la bonne façon serait de modifier ces valeurs sur mon implant de la machine.
Idéalement, je voudrais être en mesure de spécifier toutes ces informations dans mon (Jenkins) CI script, mais je me contenterais juste pour être en mesure de définir le numéro de version.
EDIT - Plus d'Infos
Après la lecture de la première réponse, je voulais préciser que je suis en créant à la fois des services et des packages NuGET - et je préfère avoir 1 mode de gestion des versions de tout, qui serait comme l'ancien JSON projet où je pourrais juste mettre à jour un fichier unique.
Mise à JOUR Je vais avec le script d'une modification du fichier CSPROJ qui à mon avis est plutôt hacky que la section j'ai besoin de modifier ressemble à ceci...
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp1.1</TargetFramework>
<Version>1.0.7777.0</Version>
<AssemblyVersion>1.0.8888.0</AssemblyVersion>
<FileVersion>1.0.9999.0</FileVersion>
<Company>MyCompany</Company>
<Authors>AuthorName</Authors>
<Product>ProductName</Product>
<Description />
<Copyright>Copyright © 2017</Copyright>
</PropertyGroup>
Donc, le problème, c'est qu'il y a plusieurs 'PropertyGroup' éléments; les autres semblent être étiqueté - mais ne sachant pas comment la CSPROJ est mis ensemble, je ne peux pas dire que ce sera toujours le cas.
Je suis en train de travailler sur l'hypothèse que les renseignements sur le colis sera toujours rempli, sinon, la valeur des balises (ci-dessus) n'apparaissent pas dans le fichier XML - alors je peux utiliser un script pour mettre à jour les valeurs en place. Si la valeur des balises n'étaient pas là, je n'aurais pas d'idée claire de ce qui PropertyGroup élément à insérer les valeurs dans (et aussi quel ordre, comme cela semble être important; modification de l'ordre qui m'a empêché de charger le projet dans VS2017).
Je suis toujours en tenue pour une meilleure solution que celle-là!
Mise à jour: Après que quelqu'un marquage de cette question comme un possible double (Auto gestion des versions de Visual Studio à 2017.NET de Base)) - je n'avais pas vu cette question avant et maintenant il semble être presque la même sauf que je ne veux juste définir le numéro de version. Aussi, les réponses à cette question ne résout pas mon problème - demande seulement ce que j'ai demandé à ma question. La accepté de répondre à ma question est exactement la réponse que j'ai besoin pour résoudre mon problème - ainsi, alors que l'autre question qui est venu en premier et s'affiche de la même - il ne m'aide pas du tout. Peut-être un mod peut vous aider?