DLL удаляется из корзины при повторном запуске веб-сайта ASP.NET Core - PullRequest
0 голосов
/ 27 августа 2018

Я занимаюсь разработкой ASP.NET Core Web-API для .NET Framework 4.7.

Проект в моем решении зависит от System.Threading.Tasks.Dataflow v4.9.0 (добавлен как пакет nuget).

Эти шаги воспроизводят мою проблему:

  1. Чистый раствор
  2. Запустить веб-сайт (в папке bin находится System.Threading.Tasks.Dataflow.dll)
  3. Остановить веб-сайт (в папке bin находится System.Threading.Tasks.Dataflow.dll)
  4. Запустить веб-сайт (файл System.Threading.Tasks.Dataflow.dll УДАЛЕН из папки bin).

На шаге 4 сайт генерирует исключение FileNotFoundException:

Не удалось загрузить файл или сборку 'System.Threading.Tasks.Dataflow, версия = 4.6.3.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a' или одна из ее зависимостей. Система не может найти указанный файл.

Это, конечно, потому что файл удален из папки bin для веб-сайта. .Dll по-прежнему находится в папке bin для проекта, ссылающегося на него.

Кто / что удаляет файл? Если я выполняю очистку и сборку или «Перестройка», .dll снова копируется в папку bin, и веб-сайт запускается в первый раз.

Если я остановлю и перезапущу его, файл снова будет удален.

Если я только остановлюсь и "Построю" решение, файл НЕ будет удален. Только когда я запускаю сайт.

Я попытался запустить без отладчика, но все еще проблема.

EDIT:

Я использовал Process Monitor, чтобы найти, что это «MSBuild.exe», который удаляет файл. Зачем это делать?

1 Ответ

0 голосов
/ 28 августа 2018

Хорошо, я понял:

В моем решении был другой проект, который ссылался на более старый пакет nuget Microsoft.Tpl.Dataflow v.4.5.24 для использования Dataflow.

Как только я удалил этот старый пакет nuget и добавил «System.Threading.Tasks.Dataflow» v4.9.0, MSBuild больше не удалял мой файл.

Все еще немного странно, что он только удалил файл при втором запуске, но теперь работает!

...