编译后,应用清单中会出现以下内容,如果我在VS中手动发布,则选择的版本是第一个,即3.9.0.3
<asmv1:assemblyIdentity name="MyApp.exe" version="3.9.0.3" publicKeyToken="0000000000000000" language="neutral" processorArchitecture="x86" type="win32" />
<description asmv2:iconFile="Logo.ico" xmlns="urn:schemas-microsoft-com:asm.v1" />
<application />
<entryPoint>
<assemblyIdentity name="MyApp" version="3.8.0.25806" language="neutral" processorArchitecture="x86" />
如果我尝试在MSBuild脚本中运行它并使用
<Target Name="GetVersion">
<Message Text="Getting version info..."/>
<GetAssemblyIdentity AssemblyFiles="@(GetVersionAssembly)">
<Output TaskParameter="Assemblies"
ItemName="GetVersionAssemblyInfo"/>
</GetAssemblyIdentity>
<Message Text="%(GetVersionAssemblyInfo.Version)..."/>
</Target>
@(GetVersionAssembly)是可执行文件的路径,选择3.8.0.25806版本,如何获取已发布的版本而不是MSBuild中提取的程序集版本,以使其与手动发布相匹配?
答案 0 :(得分:0)
我最终做的是使用MSBuild.Community.Tasks库并在GetVersion目标中添加以下行,以允许将已发布的版本存储在version.txt文件中。不确定是否有一种方法可以在Visual Studio中访问发布号,并在使用msbuild发布时增加该号码,这样可以防止在两种发布方式之间切换时必须手动更新这些版本。我将其描述为半解决方案,因为它仍然涉及手动步骤。
<Version VersionFile="version.txt" RevisionType="Increment"> <Output TaskParameter="Major" PropertyName="Major" /> <Output TaskParameter="Minor" PropertyName="Minor" /> <Output TaskParameter="Build" PropertyName="Build" /> <Output TaskParameter="Revision" PropertyName="Revision" /> </Version>
在脚本中我然后将所有%(GetVersionAssemblyInfo.Version)引用更改为$(Major)。$(Minor)。$(Build)。$(Revision)