我需要读取dll的AssemblyFileVersion,而不仅仅是Version。我试过了:
<Target Name="RetrieveIdentities">
<GetAssemblyIdentity AssemblyFiles="some.dll">
<Output
TaskParameter="Assemblies"
ItemName="MyAssemblyIdentities"/>
</GetAssemblyIdentity>
<Message Text="%(MyAssemblyIdentities.FileVersion)" />
</Target>脚本运行,但不输出任何内容。如果我将FileVersion更改为Version,它会正确地输出AssemblyVersion。如何使用我的脚本获取AssemblyFileVersion?
发布于 2016-05-02 15:38:21
借用this answer,我能够创建一个自定义的MSBuild任务:
<UsingTask
TaskName="GetFileVersion"
TaskFactory="CodeTaskFactory"
AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<AssemblyPath ParameterType="System.String" Required="true" />
<Version ParameterType="System.String" Output="true" />
</ParameterGroup>
<Task>
<Using Namespace="System.Diagnostics" />
<Code Type="Fragment" Language="cs">
<![CDATA[
Log.LogMessage("Getting version details of assembly at: " + this.AssemblyPath, MessageImportance.High);
this.Version = FileVersionInfo.GetVersionInfo(this.AssemblyPath).FileVersion;
]]>
</Code>
</Task>
</UsingTask>然后从目标中使用它:
<GetFileVersion AssemblyPath="some.dll">
<Output TaskParameter="Version" PropertyName="MyAssemblyFileVersion" />
</GetFileVersion>
<Message Text="File version is $(MyAssemblyFileVersion)" />发布于 2011-09-01 11:07:01
MSBuild Extension包有一个可能有用的MaxAssemblyFileVersion属性。
更新:
从documentation上看,GetAssemblyIdentity任务似乎不会返回FileVersion。
程序集参数输出的项包含名为Version、PublicKeyToken和
的项元数据条目。
另外,请参阅下面的StackOverflow帖子。
https://stackoverflow.com/questions/7265690
复制相似问题