MSBuild в TeamCity решения Visual Studio 2012
у меня есть VS 2012 web project /sln, который я пытаюсь построить в TeamCity. он использует .NET 4.5, который установлен на TeamCity.
сервер TeamCity имеет VS 2010 установлен только.
Я получаю эту ошибку при запуске сборки:
C:BuildAgentworkd5bc4e1b8005d077CUSAAdmin.WebCUSAAdmin.Web.csproj(799, 3):
error MSB4019:
The imported project
"C:Program Files (x86)MSBuildMicrosoftVisualStudiov11.0WebApplicationsMicrosoft.WebApplication.targets" was not found.
Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. Project CUSAAdmin.WebCUSAAdmin.Web.csproj failed.
Project CUSAAdmin.sln failed.
он пытается использовать Visual Studio 2012 (v11.0) для сборки.
Я поставил VisualStudioVersion на 10 на построить.xml правда??
<Target Name="BuildPackage">
<MSBuild Projects="CUSAAdmin.sln" ContinueOnError="false"
Targets="Rebuild"
Properties="Configuration=$(Configuration); VisualStudioVersion=10.0" />
а также внутри проекта он по умолчанию VS2010
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath
Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)MicrosoftVisualStudiov$(VisualStudioVersion)</VSToolsPath>
6 ответов:
на самом деле, вам не нужно устанавливать Visual Studio на вашем сервере CI. Вам нужно всего лишь скопировать несколько папок с машины разработки на CI сервер.
VS 2015:
- C:\Program файлы (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web
- C:\Program файлы (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications
VS 2013:
- C:\Program Файлы (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web
- C:\Program файлы (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications
VS 2012:
- C:\Program файлы (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web
- C:\Program файлы (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications
VS 2010:
- C:\Program Файлы (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web
- C:\Program файлы (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications
.NET 4.6:
- C:\Program файлы (x86)\справочные сборки\Microsoft\Framework\.NETFramework\v4. 6
.NET 4.5.2:
- C:\Program файлы (x86)\ссылка Сборки\Microsoft \ Framework\.NETFramework\v4.5. 2
.NET 4.5.1:
- C:\Program файлы (x86)\справочные сборки\Microsoft\Framework\.NETFramework\v4.5. 1
.NET 4.5:
- C:\Program файлы (x86)\справочные сборки\Microsoft\Framework\.NETFramework\v4. 5
.NET 4.0.1:
- C:\Program файлы (x86)\ссылка Сборки\Microsoft \ Framework\.NETFramework\v4.0. 1
.NET 4.0:
- C:\Program файлы (x86)\справочные сборки\Microsoft\Framework\.NETFramework\v4. 0
или как Мэтт предложил, вы можете скопировать их в подкаталог вашего проекта и изменить
<MSBuildExtensionsPath32>расположение в MSBuild (обычно.csprojили.vbprojфайл).как только вы это сделаете, ваш проект будет компилироваться. Вы все равно следует явно установить VisualStudioVersion на тот, который вы используете, чтобы убедиться, что он установлен правильно.
Примечание: это решение работает для всех типов проектов (включая веб-проекты). Для веб-сайта (у которого нет файла проекта) я закончил установку Windows SDK соответствие версии .NET SDK, которую я использую, потому что отсутствовали ключи реестра, которые заставляли его не строить.
оказывается, это очень просто. Чтобы MSBuild запускал VS2010 в качестве конструктора для решения, созданного VS2012 в TeamCity, просто установите переменную среды для конфигурации сборки следующим образом:
Name: env.VisualStudioVersion Value: 10.0Примечание TeamCity не требует установки VS2012.
кроме того, вы можете скопировать целевые объекты сборки, которые вам нужны c:\Program файлы (x86)\MSBuild в подкаталог вашего проекта (например .\Build) убедитесь, что вы сохранили структуру и добавили в свой csproj следующее:
<!-- redirect msbuild path so targets can be added to source control --> <PropertyGroup> <MSBuildExtensionsPath32>..\Build\</MSBuildExtensionsPath32> </PropertyGroup>например, если мой корень проекта C:\Dev\MyProjSln\MyProj
- Создать Папку C:\Dev\MyProjSln\Build\Microsoft\VisualStudio\version\WebApplications\
- копировать содержимое C:\Program файлы (x86)\MSBuild\Microsoft\VisualStudio\version>\WebApplications\ to created folder
- добавить элемент MSBuildExtensionsPath32 в группу свойств в узле проекта в csproj
- профит!
лично я предпочитаю этот метод отслеживания целевых зависимостей сборки, поскольку он предотвращает зависимость сервера сборки от наличия недокументированных требований к структуре папок и возвращает ваши зависимости в систему управления версиями
как рассказали здесь:
- установить nuget
MSBuild.Microsoft.VisualStudio.Web.targets- редактировать .csproj file
заменить:
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" /> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />С:
<Import Project="..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" Condition="true" />очевидно, вы должны убедиться, что версии соответствуют вашему случаю как на NuGet установлен и путь в
<Import>
Я полностью не согласен с изменением файлов проекта, потому что это может повлиять на других разработчиков. Это то, что работало для меня, так как папка v11. 0 отсутствовала в папке MS build: 1) Создать v111.
- создать папку v11. 0 на C:\Program файлы (x86)\MSBuild\Microsoft\VisualStudio
- копировать папки Web и WebApplications из моего окна разработки "C:\Program файлы (x86)\MSBuild\Microsoft\VisualStudio\v11.0"
- Booom! работа как очарование\
- Примечание: я установил "Microsoft Visual Studio 2012 Shell (изолированный) распространяемый пакет"
во-первых, TeamCity не требует наличия Visual Studio любой версии для сборки. Когда шаг сборки в проекте настроен с помощью MSBuild runner TeamCity, необходимо знать, какую версию MSBuild использовать. Это настройка шага сборки. Правильная версия MSBuild должна быть выбрана в конфигурации шага сборки в соответствии с инструментами .NET, установленными на компьютере сборки. TeamCity будет использовать это значение для определения пути расположения и установит переменную среды при вызове программа MSBuild.
проблема с Visual Studio 2012/2013 заключается в том, что он поддерживается только TeamCity начиная с 8.1.0. Так что если ваша версия TeamCity до 8.1. вам необходимо обновить до последней версии 8.1.x чтобы увидеть параметр для MSBuild Tools 2013. Как только вы выберете правильную версию MSBuild в настройках шага сборки, проблема исчезнет. Для получения дополнительной информации читайте здесь:http://blog.turlov.com/2014/07/upgrade-teamcity-to-enable-support-for.html

Comments