2

現在、プロジェクトを Visual Studio 2012 に移行し、nuget の使用を開始しています。そこで、nunit ライブラリの代わりに "NUnit Runners" nuget パッケージを使用します。

問題は、nuget がパッケージ バージョンのフォルダーを作成することです。たとえば、NUnit Runners はフォルダー内にあります: src\packages\NUnit.Runners.2.6.1\

今まで、Nunit は私の lib\NUnit フォルダーの中にありました。したがって、MSBuild ファイル内で、パスを指定してテストを実行していました。

<PropertyGroup>
    <NUnitFolder>$(MSBuildProjectDirectory)\lib\NUnit</NUnitFolder>
</PropertyGroup>
<NUnit Assemblies="..." ToolPath="$(NUnitFolder)" />

しかし、msbuild タスク内でバージョン番号を指定する必要はありません。NUnit.Runners が更新されるたびに更新する必要があります。

CreateProperty をいじってみましたが、ワイルドカードを受け入れないようです。ItemGroup も試しましたが、フォルダーではなくファイルのリストに対して機能します。

4

1 に答える 1

2

最後に、ワイルドカードを使用してプロパティを作成しようとする代わりに、私の場合は packages.config ファイルから NUnit.Runners のバージョンを取得しました。

私は今、このようなターゲットを持っています:

<Target Name="GetNUnitFolder">
    <!-- Retrieves the version of NUnit.Runners from the solution's packages.config file -->
    <XmlRead Namespace=""
             XPath="packages/package[@id='NUnit.Runners']/@version"
             XmlFileName="$(MSBuildProjectDirectory)\src\.nuget\packages.config">
        <Output TaskParameter="Value" PropertyName="NUnitVersion" />
    </XmlRead>

    <CreateProperty Value="$(MSBuildProjectDirectory)\src\packages\NUnit.Runners.$(NUnitVersion)\tools">
        <Output TaskParameter="Value" PropertyName="NUnitFolder" />      
    </CreateProperty>
</Target>

注: XmlRead を使用できるようにするには、MSBuildCommunityTasks が必要です。

バージョンを取得したら、NUnitFolder プロパティを再構築します。

于 2012-08-31T08:58:31.137 に答える