Ответ 1
Короткий ответ
Вы не можете избежать повторной публикации; но вы можете избежать повторной публикации удаленно.
В каждой сборке вашего решения библиотеки классов опубликуйте пакет NuGet в локальный каталог, например C:\LocalPackages
. В вашем проекте MVC используйте два разных источника пакета NuGet: один для выпуска, другой для отладки. Создайте источник отладки C:\LocalPackages
.
Отладка будет взята из локального источника NuGet, релиз будет получен из загруженного NuGet.
Пример из репозитория ядра ASP.NET
репозиторий ASP.NET MVC использует разные packageSources
для разных сборок. Один ответ на ваш вопрос заключается в том, чтобы использовать тот же подход, но с локальными packageSources
для сборки разработки.
aspnet release
branch > nuget.config
<packageSources>
<clear />
<add key="AspNetVNext" value="https://www.myget.org/f/aspnetmaster/api/v3/index.json" />
<add key="NuGet" value="https://api.nuget.org/v3/index.json" />
</packageSources>
aspnet dev
branch > nuget.config
<packageSources>
<add key="AspNetVNext" value="https://www.myget.org/F/aspnetcidev/api/v3/index.json" />
<add key="NuGet" value="https://api.nuget.org/v3/index.json" />
</packageSources>
Рабочий процесс для быстрого быстрого развития
Ниже приведен пример использования рабочего процесса. Это достаточно, чтобы вы начали.
Производить пакеты NuGet при сборке
В Visual Studio 2015 создайте новый Class Library (Package)
. Настройте его для публикации пакетов в локальном каталоге при сборке. Другими словами...
- Щелкните правой кнопкой мыши проект.
- Выберите "Свойства".
- На вкладке "Сборка" выберите "Произвести выходы при сборке".
Каждая сборка теперь выводит библиотеку классов в виде пакета NuGet в каталог решения artifacts
.
Автоматически публиковать пакеты NuGet в локальном каталоге при сборке
Чтобы получить доступ ко всем нашим пакетам в одном локальном источнике NuGet, добавьте следующую postpack
script в библиотеку классов project.json
. script копирует пакет в наш локальный исходный каталог NuGet. Опция /y
перезаписывает существующие файлы.
project.json
"scripts": {
"postpack":
"xcopy /y ..\\..\\artifacts\\bin\\%project:Name%\\Debug\\*.nupkg C:\\LocalPackages\\"
}
См. примечания для альтернативного script, который копирует пакеты отладки и/или выпуска.
Настройте проект MVC для использования локального каталога NuGet
Откройте проект MVC, который находится в отдельном решении. См. Примечания относительно способа определения пакетов решений без изменения глобальных настроек NuGet.
- Выберите "Инструменты" > "Диспетчер пакетов NuGet" > "Параметры диспетчера пакетов"
- Выберите источники пакетов.
- Добавьте новый источник пакета с именем
LocalPackages
. - Установите источник
C:\LocalPackages
. - Нажмите "Обновить".
Когда вы готовы опубликовать, замените запись LocalPackages
на соответствующий источник NuGet для производства.
Добавить локальные пакеты NuGet в ваш проект
Из проекта MVC обращайтесь к локальным пакетам NuGet.
- Выберите "Инструменты" > "Диспетчер пакетов NuGet" > "Управление пакетами NuGet для решения"
- Задайте источник пакета
LocalPackages
. - Выберите вкладку просмотра.
- Установите локальные пакеты.
Примечания
(1) Для использования пакетов Debug и Release в нашем проекте используйте postpack
script.
for /r "..\\" %i in (*.nupkg) do xcopy /y %i C:\LocalPackages`
(2) Visual Studio добавляет источники пакета NuGet в файл ~\AppData\Roaming\NuGet\nuget.config
. В качестве альтернативы, создайте nuget.config
в корне нашего решения.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="LocalPackages" value="C:\LocalPackages" />
</packageSources>
</configuration>