Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
248 views
in Technique[技术] by (71.8m points)

MSBuild in TeamCity of Visual Studio 2012 solution

I have a VS 2012 web project /sln that I am trying to build in TeamCity. it uses .NET 4.5 which is installed on TeamCity.

The TeamCity server has VS 2010 installed only.

I get this error when the build runs:

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. 

It is trying to use Visual Studio 2012 (v11.0) to build.

I have set the VisualStudioVersion to be 10 in the build.xml though??

 <Target Name="BuildPackage">
   <MSBuild Projects="CUSAAdmin.sln" ContinueOnError="false" 
     Targets="Rebuild" 
      Properties="Configuration=$(Configuration); VisualStudioVersion=10.0"  />

As well inside the project it is defaulting to VS2010

  <PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath 
    Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)MicrosoftVisualStudiov$(VisualStudioVersion)</VSToolsPath>
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Actually, you don't need to install Visual Studio on your CI server. You only need to copy a few folders from a development machine to the same location on the CI server.

VS 2015:

  • C:Program Files (x86)MSBuildMicrosoftVisualStudiov14.0Web
  • C:Program Files (x86)MSBuildMicrosoftVisualStudiov14.0WebApplications

VS 2013:

  • C:Program Files (x86)MSBuildMicrosoftVisualStudiov12.0Web
  • C:Program Files (x86)MSBuildMicrosoftVisualStudiov12.0WebApplications

VS 2012:

  • C:Program Files (x86)MSBuildMicrosoftVisualStudiov11.0Web
  • C:Program Files (x86)MSBuildMicrosoftVisualStudiov11.0WebApplications

VS 2010:

  • C:Program Files (x86)MSBuildMicrosoftVisualStudiov10.0Web
  • C:Program Files (x86)MSBuildMicrosoftVisualStudiov10.0WebApplications

.NET 4.6:

  • C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6

.NET 4.5.2:

  • C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.5.2

.NET 4.5.1:

  • C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.5.1

.NET 4.5:

  • C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.5

.NET 4.0.1:

  • C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.0.1

.NET 4.0:

  • C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.0

Or, as Matt suggested, you could copy them into a subdirectory of your project and alter the <MSBuildExtensionsPath32> location in your MSBuild (typically .csproj or .vbproj) file.

Once you have done this, your project will compile. You should still set the VisualStudioVersion explicitly to the one you are using just to be sure it is set right.

NOTE: This solution works for all project types (including web projects). For a web site (that has no project file), I ended up installing the Windows SDK matching the .NET SDK version I am using, because there were missing registry keys that were causing it not to build.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...