我正在寻找一个能告诉我特定dll版本的MSBuild任务。有没有可用的任务?
在我的情况下,dll是一个.Net程序集,所以我实际上在寻找Assembly.FullName。
答案 0 :(得分: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>
答案 1 :(得分:23)
谢谢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>