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