.csproj ファイルの AfterBuild ターゲットを使用して、初めて NuGet パックを使用しています。
<Target Name="AfterBuild">
<!-- package with NuGet -->
<Exec WorkingDirectory="$(BaseDir)" Command="$(NuGetExePath) pack -Verbose -OutputDirectory $(OutDir) -Symbols -Prop Configuration=$(Configuration)" />
</Target>
これは、msbuild ("msbuild MyProj.csproj") を使用してプロジェクト自体をビルドするときに正常に機能します。NuGet は、コンパイルされたアセンブリを projectdir/bin/Release または projectdir/bin/Debug で見つけることができます。
ただし、このプロジェクトはソリューション内の多くのプロジェクトの 1 つであり、ソリューション全体のビルド専用のビルド ファイルがあります。ディレクトリ ツリーは次のようになります。
- project root
- build
- src
- MyProj
- MyProj.csproj
- MyProj.nuspec
- AnotherProj
- AnotherProj.csproj
- AnotherProj.nuspec
- project.proj (msbuild file)
この msbuild ファイルは、Visual Studio ビルドの出力パスをオーバーライドします。
<PropertyGroup>
<CodeFolder>$(MSBuildProjectDirectory)\src</CodeFolder>
<CodeOutputFolder>$(MSBuildProjectDirectory)\build\$(Configuration)</CodeOutputFolder>
</PropertyGroup>
<Target Name="Build" DependsOnTargets="CleanSolution">
<Message Text="============= Building Solution =============" />
<Message Text="$(OutputPath)" />
<Message Text="$(BuildTargets)" />
<MsBuild Projects="$(CodeFolder)\$(SolutionName)"
Targets="$(BuildTargets)"
Properties="Configuration=$(Configuration);RunCodeAnalysis=$(RunCodeAnalysis);OutDir=$(OutputPath);" />
</Target>
ビルドによってアセンブリがビルド ディレクトリにリダイレクトされるようになったので、pack を実行すると、NuGet はアセンブリを見つけることができません。NuGet にビルド ディレクトリ内のアセンブリを検索させるにはどうすればよいですか?