4

MSBuild スクリプトに次のタスクがあります。

<XmlUpdate
    Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"
    XmlFileName="$(PackageDir)\temp\OddEnds.Testing\OddEnds.Testing.nuspec"
    XPath="/package/metadata/version"
    Value="%(OddEndsTestingAsmInfo.Version)" />

versionこれは、NuGet 仕様ファイル内の空のノードをアセンブリ バージョンで更新することになっています。私の .nuspec ファイルは次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<package xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http:www.w3.org/2001/XMLSchema-instance">
    <metadata xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
        <id>OddEnds</id>
        <authors>Tomas Lycken</authors>

        <!-- Here's the node I want to update -->
        <version></version>

        <owners>Tomas Lycken</owners>
        <description>Odd ends and bits that I might need in any project.</description>
    </metadata>
</package>

XPathポインター/package/metadata/versionは正しいノードを指していると思います(それを別のものに変更すると、ノードが見つからないというエラーが表示されるため)まだ出力は言う0 node(s) selected for update.

私は何が欠けていますか?

4

3 に答える 3

2

xpath 文字列に名前空間を含める必要がある場合があります。

このブログ投稿をチェックしてください: http://www.lesnikowski.com/blog/index.php/update-nuspec-version-from-msbuild/

//*:version を試すこともできます。これにより、名前空間に関係なく、すべてのバージョン要素が選択されます。

于 2011-03-03T02:13:36.423 に答える
1

NuGet、XmlUpdate、MSBuild、XPathでもまったく同じ問題が発生しました。

最後に、 MSBuildCommunityTasksプロジェクトのNuGetPackタスクに切り替えました。(NuGetタスクは(少なくとも現時点では)ナイトリービルドでのみ使用可能であることに注意してください)

このタスクを使用してMSBuildを介してNuGetパッケージにバージョン番号を追加すると、次のスニペットのようになります。

<Target Name="NuGet">
  <GetAssemblyIdentity AssemblyFiles="$(BuildCompileDirectory)\$(AssemblyName).dll">
     <Output TaskParameter="Assemblies" ItemName="AssemblyIdentities"/>
  </GetAssemblyIdentity>

  <NuGetPack
    ToolPath="$(ToolsDirectory)"
    WorkingDirectory="$(BuildCompileDirectory)"
    File="$(SrcDirectory)\$(SolutionName).nuspec"
    Version="%(AssemblyIdentities.Version)"/>
</Target>

お役に立てば幸いです。

于 2012-02-05T04:56:37.297 に答える
1

タスクは次のようになります。

<XmlUpdate
    Prefix="xmlsucks"
    Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"
    XmlFileName="$(PackageDir)\temp\OddEnds.Testing\OddEnds.Testing.nuspec"
    XPath="/xmlsucks:package/xmlsucks:metadata/xmlsucks:version"
    Value="%(OddEndsTestingAsmInfo.Version)" />

プレフィックスを、使用したい軽蔑的な用語に自由に変更してください:-)

于 2012-09-17T21:34:06.070 に答える