упаковка Nuget, на которую ссылаются сборки в решении - PullRequest
2 голосов
/ 25 февраля 2012

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

Project 1
   Reference Projec2
   Reference Projec3
Project 2
Project 3

Все вышеперечисленное - это проекты .NET 4. Я пытаюсь создать пакет nuget для Project 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 выдает исключение, что файл уже существует.

Ответы [ 2 ]

0 голосов
/ 06 августа 2014

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

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

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

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

0 голосов
/ 29 марта 2012

Если нет причин для разделения проектов 1, 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.

и т. Д.и т.д.

...