有没有办法使用在发布模式下编译的代码制作NuGet包?或者是否有某些原因我应该只发布(在本地使用,在本例中是可用的)以调试模式编译的包?
每次我从我的项目目录中调用nuget pack
,我在下面有nuspec文件,代码我只在发布模式下编译,它抱怨没有在调试文件夹中找到DLL({{1 }})。如果我在调试模式下编译它,那些文件就在那里并按照它应该打包它们。
"\bin\Debug\SomeProject.dll"
答案 0 :(得分:182)
您可以这样解决:NuGet.exe pack Foo.csproj -Prop Configuration=Release
(the reference)。
答案 1 :(得分:16)
如果您正在使用构建后事件并且想要使用Debug或Release配置创建包,则可以设置构建后事件命令行,如下所示:
"<path to nuget tools>\NuGet.exe" pack "$(ProjectPath)" -Prop Configuration=$(ConfigurationName)
答案 2 :(得分:5)
要让NuGet在运行nuget pack
时自动使用发布模式,请执行以下操作:
.csproj
文件。找到以下一行:
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
Debug
替换为Release
。答案 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...