O.O*_*O.O 8 versioning msbuild
我需要阅读AssemblyFileVersiondll而不仅仅是Version.我试过了:
<Target Name="RetrieveIdentities">
<GetAssemblyIdentity AssemblyFiles="some.dll">
<Output
TaskParameter="Assemblies"
ItemName="MyAssemblyIdentities"/>
</GetAssemblyIdentity>
<Message Text="%(MyAssemblyIdentities.FileVersion)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
该脚本运行但不输出任何内容.如果我改变FileVersion到Version它正确输出AssemblyVersion.我如何AssemblyFileVersion使用我的脚本?
从这个答案中借用,我能够创建一个自定义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>
Run Code Online (Sandbox Code Playgroud)
然后从目标中使用它:
<GetFileVersion AssemblyPath="some.dll">
<Output TaskParameter="Version" PropertyName="MyAssemblyFileVersion" />
</GetFileVersion>
<Message Text="File version is $(MyAssemblyFileVersion)" />
Run Code Online (Sandbox Code Playgroud)
MSBuild扩展包有一个可能有用的MaxAssemblyFileVersion属性。
更新:
从文档来看,任务似乎没有GetAssemblyIdentity返回FileVersion.
Assemblies 参数输出的项目包含名为 Version、PublicKeyToken 和 Culture 的项目元数据条目。
另请参阅以下 StackOverflow 帖子。
编译后从 AssemblyInfo 读取 AssemblyFileVersion
| 归档时间: |
|
| 查看次数: |
3495 次 |
| 最近记录: |