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>
726   6  

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, просто установите переменную среды для конфигурации сборки следующим образом:

enter image description here

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.

  1. создать папку v11. 0 на C:\Program файлы (x86)\MSBuild\Microsoft\VisualStudio
  2. копировать папки Web и WebApplications из моего окна разработки "C:\Program файлы (x86)\MSBuild\Microsoft\VisualStudio\v11.0"
  3. Booom! работа как очарование\
  4. Примечание: я установил "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

    Ничего не найдено.