Упаковка проектов 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>

person patridge    schedule 30.06.2011    source источник


Ответы (5)


Решить это можно так:

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

(ссылка)

person Giorgi    schedule 30.06.2011
comment
Для тех, кому нужен рассказ по ссылке (тем не менее, хорошее чтение), было изменение с v1.3 на v1.4, которое переходит от выпуска по умолчанию к значению по умолчанию, полученному из настроек проекта, которые можно изменить только в файл проекта напрямую (без опции VS GUI). Чтобы избежать изменения свойств командной строки для всех будущих вызовов nuget pack, отредактируйте XML-файл проекта в своем любимом текстовом редакторе. - person patridge; 01.07.2011
comment
Есть ли способ упаковать как версию Release, так и версию Debug в один пакет, а затем сделать так, чтобы мой проект автоматически использовал версию Debug вместо версии Release в зависимости от того, нахожусь ли я в конфигурации Debug vs. Release Solution? - person J.D.; 11.07.2011
comment
@JD: Насколько я знаю, это невозможно, но я подумал о том, чтобы внести свой вклад в nuget. Можете ли вы объяснить, в каком сценарии вам понадобится эта функция? Когда это будет полезно? - person Giorgi; 11.07.2011
comment
Если вам просто нужны символы отладки для вашего пакета, вы можете включить свои файлы PDB в * .nuspec (например, <file src="bin\Release\*.pdb" target="lib\net40\" />) или опубликовать пакет символов вместе с пакетом DLL. - person patridge; 14.07.2011
comment
@ J.D. Я также хочу упаковать как Debug, так и Release ,, и я нашел это: stackoverflow.com/questions/37673692/ - person Peter-Yu; 09.09.2019

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

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

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

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

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

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

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

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

Подключайтесь сюда. Мой профиль сборки будет собирать библиотеки 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...
person Razique    schedule 07.07.2021