【问题标题】:Packing NuGet projects compiled in release mode?打包在发布模式下编译的 NuGet 项目?
【发布时间】:2011-09-26 01:40:16
【问题描述】:

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

每次我从我的项目目录中调用 nuget pack 时,我在下面有 nuspec 文件,在我只在发布模式下编译的代码上,它抱怨在调试文件夹中找不到 DLL ("\bin\Debug\SomeProject.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>

【问题讨论】:

    标签: nuget


    【解决方案1】:

    你可以这样解决:

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

    (reference)

    【讨论】:

    • 对于任何想要从链接中获得短篇故事的人(不过,读得很好),从 v1.3 到 v1.4 的变化从默认的 Release 变为默认的从只能在项目文件中直接修改的项目设置(无 VS GUI 选项)。为避免对所有未来的nuget pack 调用进行命令行属性调整,请在您喜欢的文本编辑器中编辑项目文件 XML。
    • 有没有办法将发布版本和调试版本打包在一个包中,然后让我的项目自动使用调试版本和发布版本,具体取决于我是在调试还是版本。发布解决方案配置?
    • @JD:据我所知这是不可能的,但我正在考虑将其贡献给 nuget。您能解释一下在哪种情况下需要此功能?什么时候有用?
    • 如果您只是想为您的程序包调试符号,您可以将您的 PDB 文件包含在 *.nuspec 中(例如,&lt;file src="bin\Release\*.pdb" target="lib\net40\" /&gt;)或 publish a symbols package 与您的 DLL 程序包一起。
    • @J.D.我也想打包Debug和Release,我发现了这个:stackoverflow.com/questions/37673692/…
    【解决方案2】:

    如果您使用的是构建后事件,并且想要创建一个包,无论是使用调试还是发布配置,您都可以像这样设置构建后事件命令行:

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

        这里的答案很好,但是对于 .NET Standard 项目,我遇到了很多问题。我有一个项目只打算发布发布二进制文件,但它不尊重我的默认构建输出路径。

        我将此添加到我的 CSProj 中,然后我可以使用已接受的答案 here

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

        【讨论】:

          【解决方案5】:

          在此插话。 我的构建配置文件会将 DLL 构建到 bin\&lt;arch&gt;\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...
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-12-16
            • 1970-01-01
            • 2013-03-30
            • 2013-06-26
            相关资源
            最近更新 更多