Как перенаправить зондирование сборок в .NET Core? - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть приложение ASP.NET Core MVC, которое находится в папке App.И я не использую Kestrel или IIS Express для его запуска.Скорее, у нас есть инфраструктура, в которой эта папка App размещается непосредственно в IIS и что-то еще делает нашу среду разработки очень похожей на нашу производственную среду (DevOps).

Все работает просто отлично.Когда я собираю, вывод идет в папку bin\Debug\netcoreapp2.0, и у нас есть файл Web.config, в котором мы настроили нашу AspNetCoreModule для загрузки DLL входа с этого пути.

Теперь я хочу использовать ClosedXML, которая зависит от библиотеки System.Drawing.Common.

При сборке и тестировании приложения возникает следующая ошибка:

Сборка, указанная в манифесте зависимостей приложения (App.deps.json) не был найден:
пакет: 'System.Drawing.Common', версия: '4.5.0-preview1-25914-04'
путь: 'runtimes / win / lib / netcoreapp2.0 / System.Drawing.Common.dll '

Дело в том, что у меня есть папка bin\Debug\netcoreapp2.0, в которой находится приложение, и я могу подтвердить, что System.Drawing.Common уже скопирована туда.Тем не менее, кажется, что MSBuild не копирует ее в предполагаемую папку bin\Debug\netcoreapp2.0\runtimes\win\lib\netcoreapp2.0.

Я могу скопировать запрошенную библиотеку в указанную папку, то есть runtime/win/lib/netcoreapp2.0, и приложение будет работать нормально.

Я могу добавить дополнительные пути поиска к своему App.runtimeconfig.json.

Я могу изменить путь поиска для этой библиотеки в моем App.deps.json к тому же каталогу.

Но этовсе сделано вручную.

Как сделать так, чтобы процесс сборки копировал зависимости в их правильные расположения?

1 Ответ

0 голосов
/ 26 апреля 2018

Вы можете использовать команду Publish для создания выходного каталога.Либо используя dotnet publish из командной строки, либо в обозревателе решений Visual Studio, щелкните правой кнопкой мыши свой проект -> Опубликовать.

Когда вы просто Build используете приложение, зависимые сборки, поступающие из пакетов NuGet, остаются впапка кеша NuGet.А когда вы запускаете приложение F5 / dotnet, они загружаются из папки кэша NuGet.Но если вы хотите, чтобы папка приложения была готова к запуску в другой среде за пределами запуска VS / dotnet, вам следует опубликовать приложение.

...