这个问题与Setting the version number for .NET Core projects非常相似,但不一样。在撰写本文(1.1)和VS2017时使用最新的.NET Core稳定版本时,.NET Core已从基于JSON的项目文件切换到CSPROJ文件。设置.NET Core项目的版本号 - CSPROJ - 不是JSON项目
所以 - 我想要做的是建立一个CI环境,我希望能够修改之前的一个构建使用正确的版本号标记我的版本。
如果我这样使用老(SharedAssemblyInfo.cs招)的属性:
[assembly: AssemblyFileVersion("3.3.3.3")]
[assembly: AssemblyVersion("4.4.4.4")]
在项目的某个地方,我得到
CS0579 - Duplicate 'System.Reflection.AssemblyFileVersionAttribute'
和
CS0579 - Duplicate 'System.Reflection.AssemblyVersionAttribute'
错误时建设。
当挖掘到这一点,我发现有一个文件,它看起来像这样在\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.
问题 - 我该如何做这一点?
所以我可以看到这必须以某种方式从项目属性“包页面”中输入的值生成,但我不知道在CI机器上更改这些值的正确方法是什么。
理想情况下,我希望能够在我的(詹金斯)CI脚本中指定所有这些信息,但我只能设置版本号。
编辑 - 更多信息
读取第一个答案之后,我想弄清楚,我既创造服务的NuGet包 - 我宁愿版本的一切的1路,这将是像旧的JSON项目,我可以只更新一个文件。
UPDATE 我的脚本更改了的csproj文件,这在我看来是相当哈克,因为我需要修改看起来像这样的节会...
<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>
所以 - 问题这里有多个'PropertyGroup'元素;其他人似乎被贴上标签 - 但不知道CSPROJ是如何放在一起的,我不能说这总是如此。
我工作的前提是包的细节将始终填充,否则值标记(上面)不会出现在XML中 - 所以然后我可以使用脚本来更新值。如果值标签不存在,我不清楚哪个PropertyGroup元素插入值(以及哪个顺序,因为这看起来很重要;更改顺序使我无法在VS2017中加载项目)。
我仍然抱着比这更好的解决方案!
更新:有人将这个问题标记为可能的副本(Auto Versioning in Visual Studio 2017 (.NET Core)) - 之前我没有看到过这个问题,现在看来它似乎几乎相同,只是我不想设置版本号。此外,这个问题的答案不能解决我的问题 - 只会问我在问题中提出的问题。对我的问题的接受答案正是我需要解决我的问题的答案 - 所以当另一个问题首先出现并且看起来相同时 - 它根本没有帮助我。也许一个国防部可以帮助?
[自动版本控制在Visual Studio 2017(.NET Core)]中可能出现重复(http://stackoverflow.com/questions/43019832/auto-versioning-in- visual-studio-2017-net-core) – Tagc
包含解释的更新答案 - 我没有看到该帖子;它似乎是相同的,但它不回答我的问题。这篇文章的接受答案完美地回答了我的问题。 – Jay