gpt4 book ai didi

msbuild - NuGet pack 和 msbuild - 如何将引用程序集打包到另一个位置?

转载 作者:行者123 更新时间:2023-12-02 15:46:34 24 4
gpt4 key购买 nike

我是第一次使用 NuGet 包,使用 .csproj 文件中的 AfterBuild 目标。

<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 中找到已编译的程序集。

但是,这个项目是解决方案中的众多项目之一,并且有一个专门用于构建整个解决方案的构建文件。目录树是这样的:

- 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 在构建目录中查找程序集?

最佳答案

为 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>

关于msbuild - NuGet pack 和 msbuild - 如何将引用程序集打包到另一个位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12414039/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com