我目前正在与TeamCity一起试图让两个构建配置为ASP.NET MVC 3解决方案工作。我的设置与http://www.troyhunt.com/2010/11/you-deploying-it-wrong-teamcity_26.html的指导完全相同。当它在第一个“构建和测试”构建配置中构建.sln时,一切都很好。但是在“Package& Deploy”配置中,当我让MSBuild直接构建MyWebProject.csproj文件时,它似乎正在解析.NET 3.5程序集的核心.NET引用,而不是.NET 4.0程序集。
因此,我得到了各种.NET 3.5编译错误,例如“{get; set;}”属性需要正文,因为它们没有被标记为抽象。
此外,是什么让我觉得它正在拿起v3.5程序集,是在TeamCity CoreCompile - Csc构建活动期间,它说
“[Csc] c:\ Program 文件\ TeamCity的\ buildAgent \工作\ 651adc4c97432014 \包\ DataAnnotationsExtensions.1.0.2.0 \ LIB \ NETFramework40 \ DataAnnotationsExtensions.dll 错误CS1705:程序集'DataAnnotationsExtensions,Version = 1.0.2.0, Culture = neutral,PublicKeyToken = 358a5681c50fd84c'使用 'System.ComponentModel.DataAnnotations,Version = 4.0.0.0, Culture = neutral,PublicKeyToken = 31bf3856ad364e35'哪个更高 版本比引用的程序集 'System.ComponentModel.DataAnnotations,Version = 3.5.0.0, Culture = neutral,PublicKeyToken = 31bf3856ad364e35'“
现在,如果我在Web项目的.csproj文件中明确地将版本设置为“Version = 4.0.0.0”,那么它开始在其他核心.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
我在构建服务器上完成了以下操作: *已安装“适用于Windows 7和.NET Framework 4的Microsoft Windows SDK” *安装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。”
感谢您提供的任何帮助!
Billy McCafferty
答案 0 :(得分:12)
您需要做的是确保在构建项目时设置了一些内容......
我通常将其分为两步
1)构建解决方案
在此步骤中,确保将visual studio版本设置为2010.
2)预建网络 在此步骤中,我调用命令来构建Web项目并生成可部署的,为msbuild步骤和相应的平台设置框架版本。将目标设置为“ResolveReferences; _CopyWebApplication”构建文件路径应指向mvc应用程序的csproj文件
最后需要的步骤是设置一些构建参数。
system.Configuration =>发布
system.OutputPath => C:\的Inetpub \ wwwroot的\富\ BIN
system.WebProjectOutputDir => C:\的Inetpub \ wwwroot的\ FOO
答案 1 :(得分:1)
在MSBuild步骤配置页面中,您确实将MSBuild版本和MSBuildTools版本设置为4.0?