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
проблема исчезла.