我创建了一个简单的C#WPF程序,该程序通过单击按钮来运行不同程序的各种设置,因此在必须配置PC时它可以自动执行某些任务。
与此同时,我正在开发启动器,它将搜索上述程序的更新。
因此,当我以发布模式构建主应用程序时,在构建事件后的out dir上,我使用程序的当前版本创建一个文本文件,但它始终返回1.0.0.0
。这是我当前的构建后事件cmd.exe /c echo $(Version) >> "$(OutDir)\version.txt"
。
我尝试取消注释AssemblyInfo.cs中的[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")]
App.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
</configuration>
可能是我在事件中使用的变量错误,还是需要对代码进行一些更改?
任何想法?
编辑
目标是在运行启动器时将版本导入文本文件,并且如果版本高于安装的版本,请执行更新
我认为不可能以这种方式,但是您可以使用GetAssemblyIdentity
msbuild任务来获取程序集版本,然后使用
<GetAssemblyIdentity AssemblyFiles="$(TargetPath)">
<Output TaskParameter="Assemblies" ItemName="AssemblyVersion" />
</GetAssemblyIdentity>
<Message Text="Build version is %(AssemblyVersion.Version)" />
您可以将其放置在单独的目标中,然后在Build
目标之后运行。要将版本写入文件,您可以使用WriteLinesToFile
任务,诸如此类
<WriteLinesToFile File="$(OutputPath)\version.txt" Overwrite="true" Lines="%(AssemblyVersion.Version)" />