2009-01-14 59 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>