這個問題與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