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


109

Чи є спосіб зробити пакет 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>

Відповіді:


207

Ви можете вирішити це так: NuGet.exe pack Foo.csproj -Prop Configuration=Release( посилання ).


10
Для всіх, хто хоче короткий розповідь за посиланням (хоча добре читати), відбулася зміна від v1.3 до v1.4, яка переходить від типового Release до типового, витягнутого з налаштування проекту, яке можна змінити лише в файл проекту безпосередньо (немає параметра VS GUI). Щоб уникнути налаштування властивостей командного рядка для всіх майбутніх nuget packдзвінків, відредагуйте XML-файл проекту у вашому улюбленому текстовому редакторі.
патрон

4
Чи є спосіб упакувати і версію випуску, і налагодження в один пакет, а потім зробити мій проект автоматично використовувати відладку один проти випуску залежно від того, чи я в налаштуваннях налагодження проти випуску?
JD

2
Якщо ви просто хочете, щоб символи налагодження для вашого пакету, ви можете або включити файли PDB в * .nuspec (наприклад, <file src="bin\Release\*.pdb" target="lib\net40\" />), або опублікувати пакет символів поряд із вашим пакетом DLL.
патрон

1
Термін дії @Giorgi закінчився
Weipeng L

1
@JD Я також хочу пакувати і налагодження, і випуск ,, і я знайшов це: stackoverflow.com/questions/37673692/…
Peter-Yu

16

Якщо ви використовуєте подію після складання і хочете створити пакет, використовуючи налаштування налагодження чи випуск, ви можете встановити командний рядок події після складання так:

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

10

Щоб NuGet автоматично використовував режим випуску під час запуску nuget pack, виконайте наступне:

  1. Відкрийте свій .csprojфайл у текстовому редакторі.
  2. Знайдіть такий рядок:

    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    
  3. У цьому рядку замініть Debugна Release.
  4. Зберегти зміни.

0

Відповіді тут хороші, але у мене виникло багато проблем з цим для проекту .NET Standard. У мене був проект, який збирався публікувати лише бінарні файли випуску, але він не дотримувався мого шляху виводу за замовчуванням для збірки.

Я додав це до свого CSProj, який потім дозволив мені тут прийняти відповідь .

<PropertyGroup Condition="'$(Configuration)' == 'Release'">
      <OutputPath>$(SolutionDir)bin\$(PlatformTarget)\Release</OutputPath>
</PropertyGroup>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.