Залочивание файлов в Visual studio 2010

Залочивание файлов в Visual studio 2010

Наверное все разработчики, использующие Visual studio 2010, сталкивались с таким багом, когда студия сама держит выходные файлы солюшена, и не может успешно завершить процесс сборки. При этом показывая сообщение:

Error 1 Unable to copy file "obj\Debug\myassembly1.dll" to "bin\Debug\myassembly1.dll". The process cannot access the file 'bin\Debug\myassembly1.dll' because it is being used by another process.

При помощи анлокера можно без труда убедиться, что виновником ошибки доступа является сама Visual Studio.

Обыграть этот косяк можно с помощью такого свойства залоченных файлов, что их нельзя удалять, зато можно переименовывать. Чтобы сборка солюшена проходила успешно, перед ее началом нужно переименовать все файлы dll, которые могут удерживаться студией. Для этого нужно записать pre-build event command line: if exist "$(SolutionDir)\bin\debug\myassembly1.dll" move "$(SolutionDir)\bin\debug\myassembly1.dll" "$(SolutionDir)\bin\debug\locked.%random%" if exist "$(SolutionDir)\bin\debug\myassembly2.dll" move "$(SolutionDir)\bin\debug\myassembly2.dll" "$(SolutionDir)\bin\debug\locked.%random%" exit /B 0

При выполнении этих строк залоченные библиотеки будут переименованы, и на их место без помех будут скопированы новые. Кроме того, можно изменить скрипт командной строки и удалять все файлы с пометкой locked перед началом сборки, чтобы они не засоряли выходную директорию проекта: del "$(SolutionDir)locked.*" /q


Карта сайта


Информационный сайт Webavtocat.ru