撷取asmv1:assemblyIdentity从清单

问题描述:

编译以下后出现在应用清单,如果我在VS发布由手工采摘的版本是第一位的,即3.9.0.3撷取asmv1:assemblyIdentity从清单

<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 ,使其与手动发布相匹配?

我最终做的是使用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)引用$(专业)。$(未成年人)。$(建设)。$(修订版)