[英]Get assembly version in VS post-build events
我創建了一個簡單的 C# WPF 程序,它通過單擊按鈕運行不同程序的各種設置,因此當我必須配置 PC 時它會自動執行一些任務。
同時我正在開發一個啟動器,它會搜索上述程序的更新。
因此,當我在發布模式下構建主應用程序時,在構建事件之后的 out 目錄上,我使用程序的當前版本創建了一個文本文件,但它總是返回1.0.0.0
。 這是我當前的構建后事件cmd.exe /c echo $(Version) >> "$(OutDir)\version.txt"
。
我試圖取消注釋 AssemblyInfo.cs 中的 [assembly: AssemblyFileVersion [assembly: AssemblyFileVersion("1.0.0.6")]
部分,並使用自動版本自動增加它,但什么也沒有。 經過多次研究,我沒有發現任何東西。
在 AssemblyInfo 下方:
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Windows;
[assembly: AssemblyTitle("Program name")]
[assembly: AssemblyDescription("Program info")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Company")]
[assembly: AssemblyProduct("Product name")]
[assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
//[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.208")]
[assembly: AssemblyFileVersion("1.0.0.6")]
應用程序配置:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
</configuration>
我在事件中使用的變量可能是錯誤的,或者我需要對代碼進行一些更改?
任何想法?
編輯
目標是在我運行啟動器時將版本放入文本文件,如果版本高於安裝的版本,則進行更新
我認為不可能以這種方式進行,但是您可以使用GetAssemblyIdentity
msbuild 任務來獲取程序集版本,然后使用
<Target Name="WriteVersion" AfterTargets="Build">
<GetAssemblyIdentity AssemblyFiles="$(TargetPath)">
<Output TaskParameter="Assemblies" ItemName="AssemblyVersion" />
</GetAssemblyIdentity>
<WriteLinesToFile File="$(OutputPath)\version.txt" Overwrite="true" Lines="%(AssemblyVersion.Version)" />
</Target>
您可以將它放在單獨的目標中並在Build
目標之后運行。 要將版本寫入文件,您可以使用WriteLinesToFile
任務
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.