4

我现在用TeamCity试图获得两个构建配置为ASP.NET MVC 3解决方案工作。我的设置与http://www.troyhunt.com/2010/11/you-deploying-it-wrong-teamcity_26.html的指导非常相似。当它在第一个“Build &测试”构建配置中构建.sln时,一切都很好。但在“Package & Deploy”配置中,当我让MSBuild直接构建MyWebProject.csproj文件时,它似乎解决了.NET 3.5程序集的核心.NET引用,而不是.NET 4.0程序集。如何获得TeamCity与ASP.NET MVC 3 web项目的合作

因此,我遇到了各种.NET 3.5编译错误,比如“{get; set;}”属性,因为它们没有被标记为抽象。

另外,是什么让我认为这是捡V3.5组件,就是TeamCity的CoreCompile中 - CSC建设活动,它说

“[中信建投] C:\ PROGRAM 文件\的TeamCity \ buildAgent \工作\ 651adc4c97432014 \包\ DataAnnotationsExtensions.1.0.2.0 \ LIB \ NETFramework40 \ DataAnnotationsExtensions.dll 错误CS1705:大会 'DataAnnotationsExtensions,版本= 1.0.2.0, 文化=中性公钥= 358a5681c50fd84c' 使用 “系统。 ComponentModel.DataAnnotations,Version = 4.0.0.0, Culture = neutral,PublicKeyToken = 31bf3856ad364e35'which has更高的 版本比引用的程序集 'System.ComponentModel.DataAnnotations,版本= 3.5.0.0, 文化=中性公钥= 31bf3856ad364e35' “

现在,如果我明确设置版本” 版本= 4.0。 0.0“在Web项目的.csproj文件,然后它开始给我在其他核心.NET程序集,如System.Core.dll类似的异常;即不断尝试解析对v3.5程序集的引用,而不是v4.0。有趣的是,我知道它使用MSBuild for v4.0,因为构建日志指出“使用用户定义的MSBuild:C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319”。我的命令行参数,开始传递到MSBuild的配置,如下:

/P:Configuration=%env.Configuration% 
/P:DeployOnBuild=True 
/P:DeployTarget=MSDeployPublish 
/P:MsDeployServiceUrl=https://%env.TargetServer%/MsDeploy.axd 
/P:AllowUntrustedCertificate=True 
/P:MSDeployPublishMethod=WMSvc 
/P:CreatePackageOnPublish=True 
/P:UserName=MyUsername 
/P:Password=MyPassword 

我已经做了构建服务器上执行以下操作: *安装“的Microsoft Windows SDK的Windows 7和.NET Framework 4” *安装VS 2010(希望避免这种情况) *安装的ASP.NET MVC 3 *将evn.MSBuild集添加到%system.DotNetFramework4.0_x86_Path%。 *将注册表项HKLM/SOFTWARE/Microsoft/.NETFramework/SDKInstallRootv2.0添加为“C:\ Program Files \ Microsoft SDKs \ Windows \ v7.1”。

感谢您提供任何帮助!

比利·麦卡弗蒂

+0

哪个版本的TeamCity? – 2012-04-20 15:43:54

回答

12

你得什么做的是确保几件事情是,当你正在建设的项目设置...

我一般把它分为两个步骤

1)建立解决方案
在此步骤中,确保visual studio版本设置为2010。

enter image description here

2)预生成的Web 在这一步我调用命令来构建Web项目,并生成了部署,设置MSBuild的步骤,并且适当的和平台架构的版本。设定目标,以“ResolveReferences; _CopyWebApplication”构建文件路径应该指向的csproj文件MVC应用

enter image description here

所需的最后一步是设置一些构建参数。

system.Configuration =>版本
system.OutputPath => C:\的Inetpub \ wwwroot的\ FOO \ BIN
system.WebProjectOutputDir => C:\的Inetpub \ wwwroot的\ FOO

+0

哇!多谢了!这是“目标”,做到了这一点。 – 2012-04-20 16:50:54

1

在你的MSBuild步骤配置页面,你肯定有MSBuild版本和MSBuildTools版本设置为4.0?

enter image description here