Поддержка Nuget в проектах, создаваемых с использованием различных платформ.NET (например,.NET 2, .NET 4 и т. Д.)
Эта проблема:
Я постараюсь сделать это простым.
- У нас есть два идентичных решения, но одно построено на.NET 2.0, а другое - на.NET 4.0
- Оба решения содержат по одному проекту, каждый из которых идентичен, но один из них построен на.NET 2.0 и.NET 4.0.
- Оба проекта ссылаются на одни и те же файлы
- Цель этого подхода заключается в том, что нам нужно создать вспомогательную библиотеку, но необходимо поддерживать несколько платформ (.NET 2.0..NET 4.0 и т. Д.)
- Решения, проекты и исходные файлы находятся в одной папке.
Наша цель:
Мы хотим использовать Nuget для NLog. Однако мы хотим, чтобы проект.NET 2.0 связывался только с библиотекой Nuget NLog 2.0, а проект.NET 4.0 связывался только с библиотекой Nuget NLog 4.0.
Есть ли в Nuget, чтобы поддержать это? т.е. конфигурация и т. д.
Благодарю.
2 ответа
Пакет NLog содержит сборки для платформ.NET 2.0 и.NET 4.0. Вы должны поместить сборки в один и тот же пакет и указать NLog как зависимость. Когда вы добавляете свой пакет в проект, NuGet получит правильные сборки как для NLog, так и для вашего пакета.
Как сказал Уфук, пакет NLog уже содержит сборки для.NET 2.0 и 4.0.
Если у вас было только одно решение:
- Установите NLog. Правильный каркас будет ссылаться автоматически.
- Запустите команду NuGet Spec.
- Отредактируйте созданный nuspec (возможно, с помощью NuGet Package Explorer).
- Запустите NuGet Pack. Зависимости от установленных пакетов будут добавлены автоматически, включая NLog.
Однако у вас есть два решения, и вы хотите создать один пакет. В этом случае:
Создайте папку со следующей структурой (сборки NLog не должны быть включены):
PACKAGE_NAME | lib | | net40 | | | (insert here your .NET 4.0 assemblies) | | net45 | | | (insert here your .NET 4.5 assemblies)
Перейти в корень этой папки.
- Запустите команду NuGet Spec.
- Переименуйте Package.nuspec в PACKAGE_NAME.nuspec.
Отредактируйте файл PACKAGE_NAME.nuspec (возможно, с помощью NuGet Package Explorer) с данными своего пакета и включите в метаданные следующие строки:
<dependencies> <dependency id="NLog" version="REPLACE_WITH_VERSION" /> </dependencies>
Запустите команду NuGet Pack. Ваш пакет будет создан (вы можете проверить, все ли в порядке с NuGet Package Explorer).
Теперь каждый, кто установит ваш пакет, будет правильно ссылаться на ваши сборки.
Если вам нужно больше деталей, проверьте эту ссылку.