Я сделал бы следующее:
$string = <<< heredoc
plain text and now a function: %s
heredoc;
$string = sprintf($string, testfunction());
Не уверенный, если Вы полагали бы, что это более изящно...
I've had this problem with Visual Studio, too. We use NAnt instead of MSBuild, but the problem is the same. I was able to work around it by modifying the build file to ignore failures when copying xml documentation.
Note that this doesn't actually solve the original problem since the xml files are still locked, but this workaround was good enough for us since the actual content of our xml documentation doesn't change very often.
В основном не проверяйте файлы в папке bin, это плохая идея.
Вы можете перетащить этот файл в другой каталог. и ссылайтесь на него оттуда или поместите код, который использует его, в библиотеку и скопируйте его в свой каталог bin, а затем сделайте ссылку на него.
Msbuild затем скопирует это в каталог bin веб-проектов:)
У нас точно такая же проблема с людьми, которые регистрируют вещи в каталог bin, если только вам не обязательно, чтобы каталоги bin либо вообще не регистрировались, либо просто сохранялись.
Кристан писал:
Вы можете перетащить этот файл в другой каталог и ссылаться на него оттуда или поместить код, который его использует, в библиотеку и получить событие пост-сборки, скопировав его в свой bin, а затем ссылку.
Наша проблема с блокировкой XML-файла не в каталоге bin проекта, а во внешнем справочном каталоге. Мы попали в него при выполнении TortoiseSVN-> Обновление, когда доступна новая версия. Предполагая, что это связано с тем, что VS использует файл для intellisense.
Для тех, кто столкнулся с этой проблемой блокировки из-за TortoiseSVN-> Update, я в настоящее время экспериментирую с ловушкой перед обновлением, которая удаляет проблемные файлы перед обновлением ( они будут восстановлены, если обновление не требуется), пока что, похоже, это работает (что странно), но я не тестировал его достаточно тщательно, чтобы сказать наверняка.