msbuild任务读取dll的AssemblyFileVersion
我需要读取dll的msbuild任务读取dll的AssemblyFileVersion,msbuild,versioning,Msbuild,Versioning,我需要读取dll的AssemblyFileVersion,而不仅仅是Version。我试过: <Target Name="RetrieveIdentities"> <GetAssemblyIdentity AssemblyFiles="some.dll"> <Output TaskParameter="Assemblies" ItemName="MyAssemblyIdentities"/>
AssemblyFileVersion
,而不仅仅是Version
。我试过:
<Target Name="RetrieveIdentities">
<GetAssemblyIdentity AssemblyFiles="some.dll">
<Output
TaskParameter="Assemblies"
ItemName="MyAssemblyIdentities"/>
</GetAssemblyIdentity>
<Message Text="%(MyAssemblyIdentities.FileVersion)" />
</Target>
脚本运行,但不输出任何内容。如果我将FileVersion
更改为Version
,它将正确输出AssemblyVersion
。如何使用脚本获取AssemblyFileVersion
?包中有一个可能有用的属性
更新:
从中,它看起来不像GetAssemblyIdentity
任务返回FileVersion
Assemblies参数输出的项包含项元数据
名为Version、PublicKeyToken和Culture的条目
另外,请参阅下面的StackOverflow post
借用,我能够创建自定义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)" />
这是一个老问题,但我也有同样的需要,我想知道这是否已经通过读取DLL而不是assemblyinfo.cs文件解决了?