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

pat*_*dge 101 nuget

有没有办法使用在发布模式下编译的代码来创建NuGet包?或者是否有一些原因我应该只发布(在本地使用,在这种情况下可用)在调试模式下编译的包?

每次我nuget pack从我的项目目录中调用时,我在下面的nuspec文件,在代码我只在发布模式下编译,它抱怨没有在调试文件夹("\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>
Run Code Online (Sandbox Code Playgroud)

Gio*_*rgi 196

你可以解决这个问题是这样的:NuGet.exe pack Foo.csproj -Prop Configuration=Release(参考).

  • 对于想要从链接中读短篇小说的人(尽管读得很好),从v1.3到v1.4的变化从默认的Release发布到默认的项目设置,只能在直接项目文件(没有VS GUI选项).要避免所有未来`nuget pack`调用的命令行属性调整,请在您喜欢的文本编辑器中编辑项目文件XML. (9认同)
  • 有没有办法将Release和Debug版本打包在一个软件包中,然后让我的项目自动使用Debug one和Release one,具体取决于我是否处于Debug vs. Release Solution配置中? (4认同)
  • 如果你只想要包的调试符号,你可以在*.nuspec中包含你的PDB文件(例如,`<file src ="bin\Release\*.pdb"target ="lib \net40 \"/>` )或[发布符号包](http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-symbol-package)和DLL包. (2认同)

End*_*gin 16

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

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


Sam*_*Sam 9

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

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

    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在这一行,替换DebugRelease
  4. 保存更改。