сборки, на которые ссылается упаковка nuget в решении

У меня есть визуальное студийное решение со следующей структурой

Project 1
   Reference Projec2
   Reference Projec3
Project 2
Project 3

Все вышеперечисленное является проектами .NET 4. Я пытаюсь создать пакет nuget для проекта 1, однако, используя файл nuspec по умолчанию, пакет не включает сборки project2 и 3 в папке net40. Обратите внимание, что я не хочу создавать отдельные пакеты для проектов 2 и 3, поскольку эти сборки используются только в проекте 1.

Чтобы обойти это, я делаю что-то вроде этого

  <files>    
    <file src="bin\release\*.dll" target="lib\net40"                           
          exclude="**\Project1.dll"  />
  </files>

Мне было интересно, является ли вышеизложенное лучшим решением?

Также для пакета Symbol он не включает файлы .pdb для проектов 2 и 3?

Я также заметил, что на веб-сайте nuget говорится, что

если вы указываете какие-либо файлы, соглашения игнорируются, и в пакет включаются только файлы, перечисленные в файле .nuspec.

Я не вижу, чтобы это происходило, потому что, когда я использую элемент, я по-прежнему получаю сборку Project1 в папке lib по соглашению, поэтому мне пришлось исключить ее, иначе nuget выдает исключение, что файл уже существует. Любая идея?


person nabeelfarid    schedule 24.02.2012    source источник


Ответы (2)


Если нет причин для того, чтобы Project1, 2 и 3 были отдельными (и вы говорите, что 2 и 3 когда-либо используются только 1), объедините их в один проект. Вы также можете разделить задачи, добавив папки внутри одного проекта. Например, для типичного проекта WPF на основе MVVM у меня было бы

MyProject
[ ]Properties -> contains AssemblyInfo.cs
[ ]Resources -> contains resources
[ ]Model -> contains Model classes
[ ]ViewModel -> contains ViewModel classes
[ ]View -> contains View classes
[ ]App -> contains App.xaml etc.

И т.д. и т.п.

person Menno Deij - van Rijswijk    schedule 29.03.2012

Вы можете добавить несколько сборок (и PDB) в свой пакет, однако вам придется перечислить их, поскольку подстановочные знаки не работают (по крайней мере, они не работали в последний раз, когда я пытался).

Или вы можете автоматизировать создание файла nuspec (и nupkg), используя такое решение:

Добавьте мою утилиту NuGetPack.exe и стандартную NuGet.exe в папку решения и решение, затем добавьте новый проект библиотеки классов в свое решение, укажите проекты, которые вы хотите упаковать, затем добавьте событие после сборки в новый проект и выполните сборку.

Вы можете найти статью с пошаговым руководством и исходный код + двоичный файл здесь.

person Danny Varod    schedule 05.08.2014