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>
私が抱えている問題は、NuGetPackタスクが2回実行されることです。1回目はアセンブリバージョンが欠落しているがパスが正しい、2回目はアセンブリバージョンが正しいがパスが欠落している!
出力は次のとおりです。
Updating Xml Document "D:\MyProject\package\MyAssembly.nuspec".
1 node(s) selected for update.
XmlUpdate Wrote: "".
Updating Xml Document "\MyAssembly.nuspec".
D:\MyProject\MyProject.build(64,9): error : Could not find file
'D:\MyAssembly.nuspec'.
Done Building Project "D:\MyProject\MyProject.build" (Package target(s)
) -- FAILED.
NuGetPackタスクも使用してみましたが、同様の結果が得られました。ヘルプは大歓迎です!