Msbuild 使用XmlUpdate从程序集设置版本信息

Msbuild 使用XmlUpdate从程序集设置版本信息,msbuild,msbuildcommunitytasks,Msbuild,Msbuildcommunitytasks,使用MSBuild和MSBuild社区任务,我尝试做一些非常简单的事情: 从程序集获取版本信息 使用该版本信息更新.nuspec文件 我的MSBuild目标如下所示: <Target Name="Package"> <GetAssemblyIdentity AssemblyFiles="%(PackageDir.FullPath)\MyAssembly.dll"> <Output TaskParameter="Assemblies" ItemName="

使用MSBuild和MSBuild社区任务,我尝试做一些非常简单的事情:

  • 从程序集获取版本信息
  • 使用该版本信息更新.nuspec文件
  • 我的MSBuild目标如下所示:

    <Target Name="Package">
      <GetAssemblyIdentity AssemblyFiles="%(PackageDir.FullPath)\MyAssembly.dll">
        <Output TaskParameter="Assemblies" ItemName="AssemblyIdentity" />
      </GetAssemblyIdentity>
      <XmlUpdate 
         Prefix="nu"
         Namespace="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"
         XmlFileName="%(PackageDir.FullPath)\MyAssembly.nuspec"
         XPath="/nu:package/nu:metadata/nu:version"
         Value="%(AssemblyIdentity.Version)" />
    </Target>
    
    <Target Name="Package">
      <GetAssemblyIdentity AssemblyFiles="@(PackageVersionAssembly)">
        <Output TaskParameter="Assemblies" ItemName="AssemblyIdentity" />
      </GetAssemblyIdentity>
      <XmlUpdate 
         Prefix="nu"
         Namespace="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"
         XmlFileName="@(NuSpecFile)"
         XPath="/nu:package/nu:metadata/nu:version"
         Value="%(AssemblyIdentity.Version)" />
    </Target>
    

    我还尝试使用NuGetPack任务,但得到了类似的结果。非常感谢您的帮助

    我似乎已经解决了这个问题,但我仍然不确定我原来问题中的代码为什么不起作用

    我没有通过连接(例如AssemblyFiles=“%(PackageDir.FullPath)\MyAssembly.dll”)指定路径,而是将每个路径放入自己的项中:

    <ItemGroup>
    ...
      <PackageVersionAssembly Include=".\build-artifacts\package\MyAssembly.dll"/>
      <NuSpecFile Include=".\build-artifacts\package\MyAssembly.nuspec"/>
    ...
    </ItemGroup>
    
    
    ...
    ...
    
    我在任务中做了相同的更改,并对.nuspec文件的引用做了相同的更改

    新的包目标如下所示:

    <Target Name="Package">
      <GetAssemblyIdentity AssemblyFiles="%(PackageDir.FullPath)\MyAssembly.dll">
        <Output TaskParameter="Assemblies" ItemName="AssemblyIdentity" />
      </GetAssemblyIdentity>
      <XmlUpdate 
         Prefix="nu"
         Namespace="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"
         XmlFileName="%(PackageDir.FullPath)\MyAssembly.nuspec"
         XPath="/nu:package/nu:metadata/nu:version"
         Value="%(AssemblyIdentity.Version)" />
    </Target>
    
    <Target Name="Package">
      <GetAssemblyIdentity AssemblyFiles="@(PackageVersionAssembly)">
        <Output TaskParameter="Assemblies" ItemName="AssemblyIdentity" />
      </GetAssemblyIdentity>
      <XmlUpdate 
         Prefix="nu"
         Namespace="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"
         XmlFileName="@(NuSpecFile)"
         XPath="/nu:package/nu:metadata/nu:version"
         Value="%(AssemblyIdentity.Version)" />
    </Target>
    
    
    
    我希望这能帮助别人