Упаковка проектов NuGet, скомпилированных в режиме выпуска?

Есть ли способ сделать пакет 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>

Ответ 1

Вы можете решить это следующим образом: NuGet.exe pack Foo.csproj -Prop Configuration=Release (ссылка).

Ответ 2

Если вы используете событие post-build и хотите создать пакет, используя конфигурацию Debug или Release, вы можете настроить командную строку события после сборки следующим образом:

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

Ответ 3

Чтобы NuGet автоматически использовал режим Release при запуске nuget pack, выполните следующие действия:

  • Откройте файл .csproj в текстовом редакторе.
  • Найдите следующую строку:

    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    
  • В этой строке замените Debug на Release.
  • Сохранить изменения.

Ответ 4

Ответы здесь хорошие, но у меня было много проблем с этим для проекта.NET Standard. У меня был проект, который собирался публиковать только двоичные файлы Release, но он не соблюдал мой путь вывода сборки по умолчанию.

Я добавил это к моему CSProj, который затем позволил мне использовать принятый ответ здесь.

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