读取dll版本的MSBuild任务

19
我正在寻找一个MSBuild任务,可以告诉我特定dll的版本。是否有可用的任务? 在我的情况下,该dll是一个.NET程序集,因此我实际上正在寻找Assembly.FullName。
2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
27

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>

25

感谢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>

我在构建脚本中制作了zip文件,这帮助我在文件名中添加了版本号!!!谢谢! - quip
1
工作中的代码示例确实很有帮助——节省了大量时间。谢谢! - Joseph Gabriel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,