Visual Studio 2017 не может скопировать DLL, потому что она используется процессом MSBuild.exe

У меня есть решение с 2 проектами, включенными: WPF Applicatin и ClassLibrary (пробовал как стандартный, так и рамочный шаблон). WPFApp ссылается на ClassLibrary.

Проблема в том, что когда я пытаюсь построить решение, я получаю следующую ошибку:

Невозможно скопировать файл "obj\Debug\ClassLibrary.dll" в "bin\Debug\ClassLibrary.dll". Процесс не может получить доступ к файлу "bin \ Debug \ ClassLibrary.dll", поскольку он используется другим процессом.

Если я заканчиваю процесс MSBuild.exe, все работает нормально (пока я не изменю что-то в ClassLibrary и попытаюсь создать решение)

Я пробовал события до и после сборки с

taskkill /F /IM MSBuild.exe

Но это не работает, просто появились новые ошибки. Я полагаю, это связано с закрытием MSBuild.

Есть ли у вас какие-либо идеи о том, как справиться с этой проблемой или, по крайней мере, в чем причина такого поведения MSBuild?

1 ответ

Решение

Кажется, что FodyWeaver вызывает проблему.

Цитата со страницы проекта на GitHub:

Не поддерживается:

[...]

  • Проекты, смешивающие старый формат.csproj с новым <PackageReference> узлы.

Я думаю, что Фоди просто запутался в процессе сборки. Может быть, он выполняет что-то вроде задачи сборки (как предложил @Crowcoder) и, таким образом, MSBuild блокирует dll.

После переключения на packages.config проблема исчезла.

Другие вопросы по тегам