我是第一次使用NuGet包,使用.csproj文件中的AfterBuild目标.
<Target Name="AfterBuild">
<!-- package with NuGet -->
<Exec WorkingDirectory="$(BaseDir)" Command="$(NuGetExePath) pack -Verbose -OutputDirectory $(OutDir) -Symbols -Prop Configuration=$(Configuration)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
使用msbuild("msbuild MyProj.csproj")构建项目时,这很好.NuGet能够在projectdir/bin/Release或projectdir/bin/Debug中找到已编译的程序集.
但是,该项目是解决方案中的众多项目之一,并且有一个专用于构建整个解决方案的构建文件.目录树是这样的:
- project root
- build
- src
- MyProj
- MyProj.csproj
- MyProj.nuspec
- AnotherProj
- AnotherProj.csproj
- AnotherProj.nuspec
- project.proj (msbuild file)
Run Code Online (Sandbox Code Playgroud)
此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>
Run Code Online (Sandbox Code Playgroud)
现在构建将程序集重定向到构建目录,当我运行pack时,NuGet无法找到它们.如何让NuGet在build目录中找到程序集?
Rya*_*anW 15
为NuGet提供一个TargetPath属性,以便在哪里找到程序集.
<Target Name="AfterBuild" Condition="'$(Configuration)' == 'Release' ">
<!-- package with NuGet -->
<Exec WorkingDirectory="$(BaseDir)" Command="$(NuGetExePath) pack -OutputDirectory $(OutDir) -Symbols -Prop Configuration=$(Configuration);TargetPath=$(OutDir)$(AssemblyName)$(TargetExt)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7909 次 |
| 最近记录: |