代码之家  ›  专栏  ›  技术社区  ›  Mike Schall

用于读取dll版本的msbuild任务

  •  18
  • Mike Schall  · 技术社区  · 16 年前

    我正在寻找一个msbuild任务,该任务将告诉我特定dll的版本。是否有可用于此的任务?

    在我的例子中,dll是一个.NET程序集,所以我实际上正在查找assembly.fullname。

    2 回复  |  直到 11 年前
        1
  •  25
  •   Julien Hoarau    16 年前

    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>
    
        2
  •  23
  •   Mike Schall    16 年前

    谢谢你,麦地诺!我想我应该共享工作代码。

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