MSBuildでNUGETパッケージフォルダを入手してください
-
13-12-2019 - |
質問
MSBUILDのNUGETで管理するNUnitのような実行可能ツールを呼び出したい:
<Target Name="Test">
<CreateItem Include="$(BuildCompileDirectory)\*.Tests.*dll">
<Output TaskParameter="Include" ItemName="TestAssemblies" />
</CreateItem>
<NUnit
Assemblies="@(TestAssemblies)"
ToolPath="$(PackagesDirectory)\NUnit.2.5.10.11092\tools"
WorkingDirectory="$(BuildCompileDirectory)"
OutputXmlFile="$(BuildDirectory)\$(SolutionName).Tests.xml" />
</Target>
.
問題は、NUGETパッケージのフォルダがパッケージのバージョン番号を含むことです。たとえば、nunit-console.exe
はFolder packages\NUnit.2.5.10.11092\tools
にあります。NUnitパッケージを更新した場合、このパスは変更され、MSBuildスクリプトを更新する必要があります。それは許容できません。
msbuildはディレクトリ内のワイルドカードを許可しないので、これは機能しません。
ToolPath="$(PackagesDirectory)\NUnit.*\tools"
.
NUGETパッケージを更新するたびにビルドスクリプトを更新しなくてもMSBUILDでツールを呼び出すことができますか?
解決
MSBUILD変換特定のツールの相対ディレクトリを取得するには:
<ItemGroup>
<NunitPackage Include="$(PackagesDirectory)\NUnit.*\tools\nunit-console.exe"/>
</ItemGroup>
<Target Name="Test">
<CreateItem Include="$(BuildCompileDirectory)\*.Tests.*dll">
<Output TaskParameter="Include" ItemName="TestAssemblies" />
</CreateItem>
<NUnit
Assemblies="@(TestAssemblies)"
ToolPath="@(NunitPackage->'%(relativedir)')"
WorkingDirectory="$(BuildCompileDirectory)"
OutputXmlFile="$(BuildDirectory)\$(SolutionName).Tests.xml" />
</Target>
. 所属していません StackOverflow