Packing NuGet projects compiled in release mode?

有没有什么方法可以使用在发布模式下编译的代码来制作 NuGet 包?或者有什么原因我应该只发布在调试模式下编译的包(在这种情况下在本地可用) ?

每次我从我的项目目录(下面是 nuspec 文件)调用 nuget pack时,对于我只在发布模式下编译的代码,它都会抱怨在 debug 文件夹("\bin\Debug\SomeProject.dll")中找不到 DLL。如果我在调试模式下编译它,那些文件就在那里,它会按照应该的方式打包它们。

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>$id$</id>
<version>$version$</version>
<authors>$author$</authors>
<owners>$author$</owners>
<iconUrl>http://somewhere/project.png</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
</metadata>
</package>
37001 次浏览

你可以这样解决:

NuGet.exe pack Foo.csproj -Prop Configuration=Release

(参考文献)

如果您正在使用后期生成事件,并且您想要创建一个包,无论是使用 Debug 还是 Release 配置,您都可以像下面这样设置后期生成事件命令行:

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

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

  1. Open your .csproj file in a text editor.
  2. 找到以下一行:

    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    
  3. In this line, replace Debug with Release.
  4. Save changes.

这里的答案是好的,但我在这方面有很多问题。NET 标准项目。我有一个只发布发布二进制文件的项目,但它没有遵守我的默认构建输出路径。

I added this to my CSProj which then enabled me to use the accepted answer 给你.

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

这里有声音。 我的构建配置文件将把 DLL 构建为 bin\<arch>\Debug|Release。 通过运行 nuget命令,我可以指向我的文件夹,如下所示: Notice how I used the -p option.

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