撷取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)引用$(专业)。$(未成年人)。$(建设)。$(修订版)