Visual Studio 2012解决方案的TeamCity中的MSBuild
我有一个VS 2012 web项目/ sln,我正在尝试在TeamCity中构建。 它使用安装在TeamCity上的.NET 4.5。
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)来构建。
我已经在build.xml中将VisualStudioVersion设置为10 ,但是?
<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>
实际上,您不需要在CI服务器上安装Visual Studio。 您只需将几个文件夹从开发机器复制到CI服务器上的相同位置即可。
VS 2015:
VS 2013:
VS 2012:
VS 2010:
.NET 4.6:
.NET 4.5.2:
.NET 4.5.1:
.NET 4.5:
.NET 4.0.1:
.NET 4.0:
或者,正如Matt所建议的那样,您可以将它们复制到项目的子目录中,并更改MSBuild中的<MSBuildExtensionsPath32>
位置(通常为.csproj
或.vbproj
)文件。
一旦你完成了这个项目,你的项目就会被编译。 您仍然应该将VisualStudioVersion明确设置为您正在使用的VisualStudioVersion,以确保其设置正确。
注意:此解决方案适用于所有项目类型(包括Web项目)。 对于一个网站(没有项目文件),我最终安装了与我正在使用的.NET SDK版本匹配的Windows SDK,因为缺少导致它无法构建的注册表项。
结果很简单。 为了让MSBuild运行VS2010作为TeamCity中由VS2012制作的解决方案的构建器,只需为此构建配置设置环境变量即可:
Name: env.VisualStudioVersion
Value: 10.0
注意TeamCity不需要安装VS2012。
或者,您可以将所需的构建目标从c: Program Files(x86) MSBuild复制到项目的子目录(例如。 Build),确保保留结构并将以下内容添加到您的csproj中:
<!-- redirect msbuild path so targets can be added to source control -->
<PropertyGroup>
<MSBuildExtensionsPath32>..Build</MSBuildExtensionsPath32>
</PropertyGroup>
例如,如果我的项目根目录是C: Dev MyProjSln MyProj
就个人而言,我更喜欢这种跟踪构建目标依赖关系的方法,因为它可以防止构建服务器依赖于具有未记录的文件夹结构需求,并将您的依赖关系存入源代码控制
链接地址: http://www.djcxy.com/p/81627.html上一篇: MSBuild in TeamCity of Visual Studio 2012 solution
下一篇: Differences between Visual Studio (.sln) build runner and MSBuild