Создание решения, содержащего проект веб-приложения, с использованием MSBuild из powershell, например:
msbuild "/p:OutDir=$build_dir\" $solution_file
У меня нормально работает на 32-битной, но на 64-битной машине я сталкиваюсь с этой ошибкой:
ошибка MSB4019: импортированный проект "C: \ Program Files \ MSBuild \ Microsoft \ VisualStudio \ v9.0 \ WebApplications \ Microsoft.WebApplication.targets" не найден. Убедитесь, что путь в объявлении правильный, и что файл существует на диске.
Я использую Visual Studio 2008 и powershell v2. Проблема уже задокументирована здесь и здесь . В основном при 64-разрядной установке VS, Microsoft.WebApplication.targets, необходимый MSBuild, находится в каталоге Program Files (x86), а не в каталоге Program Files, но MSBuild не распознает это и поэтому выглядит не в том месте.
Два решения, которые у меня есть, не идеальны:
- Вручную скопируйте 64-битный файл из Program Files (x86) в Program Files. Это плохое решение - каждый разработчик должен будет сделать это вручную.
- Вручную отредактируйте файл csproj, чтобы MSBuild выглядел в нужном месте. Опять же, не идеально: я бы предпочел не заставлять всех на 64-битной версии вручную редактировать файлы csproj для каждого нового проекта.
например.
<Import Project="$(MSBuildExtensionsPathx86)\$(WebAppTargetsSuffix)" Condition="Exists('$(MSBuildExtensionsPathx86)\$(WebAppTargetsSuffix)')" />
В идеале я хочу, чтобы MSBuild импортировал целевой файл из нужного места из командной строки, но Я не могу понять, как это сделать . Любые решения?