打包在发布模式下编译的NuGet项目?

时间:2011-06-30 14:48:11

标签: nuget

有没有办法使用在发布模式下编译的代码制作NuGet包?或者是否有某些原因我应该只发布(在本地使用,在本例中是可用的)以调试模式编译的包?

每次我从我的项目目录中调用nuget pack,我在下面有nuspec文件,代码我只在发布模式下编译,它抱怨没有在调试文件夹中找到DLL({{1 }})。如果我在调试模式下编译它,那些文件就在那里并按照它应该打包它们。

"\bin\Debug\SomeProject.dll"

5 个答案:

答案 0 :(得分:182)

您可以这样解决:NuGet.exe pack Foo.csproj -Prop Configuration=Releasethe reference)。

答案 1 :(得分:16)

如果您正在使用构建后事件并且想要使用Debug或Release配置创建包,则可以设置构建后事件命令行,如下所示:

"<path to nuget tools>\NuGet.exe" pack "$(ProjectPath)" -Prop Configuration=$(ConfigurationName)

答案 2 :(得分:5)

要让NuGet在运行nuget pack时自动使用发布模式,请执行以下操作:

  1. 在文本编辑器中打开.csproj文件。
  2. 找到以下一行:

    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    
  3. 在此行中,将Debug替换为Release
  4. 保存更改。

答案 3 :(得分:0)

这里的答案很好,但是对于.NET Standard项目,我对此有很多问题。我有一个仅会发布Release二进制文件的项目,但它没有遵守我的默认生成输出路径。

我将此添加到CSProj中,然后使我能够使用接受的答案here

<PropertyGroup Condition="'$(Configuration)' == 'Release'">
      <OutputPath>$(SolutionDir)bin\$(PlatformTarget)\Release</OutputPath>
</PropertyGroup>

答案 4 :(得分:0)

在这里打招呼。 我的构建配置文件会将 DLL 构建为 bin\<arch>\Debug|Release。 通过运行 nuget 命令,我能够指向我的文件夹,如下所示: 请注意我如何使用 -p 选项。

PS > nuget pack -p Configuration="x64\Release"

Attempting to build package from ...
...

Found packages.config. Using packages listed as dependencies
...
- Add a dependency group for .NETFramework4.7.2 to the nuspec
Successfully created package...