2009-01-14 105 views
18

我正在寻找一个MSBuild任务,会告诉我一个特定的DLL的版本。有没有可用于此的任务?MSBuild任务阅读DLL的版本

在我的情况下,DLL是一个.Net程序集,所以我实际上在寻找Assembly.FullName。

回答

22

谢谢madgnome!我以为我会分享工作代码。

<Target Name="UpdateWebConfigVersion"> 
    <GetAssemblyIdentity AssemblyFiles="lib\foo.dll"> 
     <Output TaskParameter="Assemblies" ItemName="fooAssemblyInfo"/> 
    </GetAssemblyIdentity> 
    <XmlUpdate XmlFileName="src\Web\ServiceModel.Extensions.config" 
      XPath="//extensions/behaviorExtensions/add[@name='silverlightFaults']/@type" 
      Value="foo.ServiceModel.Extensions.Behaviors.SilverlightFaultBehavior, foo, Version=%(fooAssemblyInfo.Version), Culture=neutral, PublicKeyToken=XXXXXXXX"/> 
</Target> 
+0

我在我的构建脚本中创建zip文件,这帮助我将版本号放在文件名中!谢谢! – quip 2010-10-29 20:53:24

25

GetAssemblyIdentity是你的男人。此任务输出包含名为Version,PublicKeyToken和Culture的项目元数据条目。

<ItemGroup> 
    <MyAssemblies Include="File1.dll;File2.dll" /> 
</ItemGroup> 

<Target Name="RetrieveIdentities> 
    <GetAssemblyIdentity 
     AssemblyFiles="@(MyAssemblies)"> 
     <Output 
      TaskParameter="Assemblies" 
      ItemName="MyAssemblyIdentities"/> 
    </GetAssemblyIdentity> 
</Target>