4

我目前正在与 TeamCity 合作,试图让两个构建配置适用于 ASP.NET MVC 3 解决方案。我的设置与http://www.troyhunt.com/2010/11/you-deploying-it-wrong-teamcity_26.html上的指南几乎相同。当它在第一个“构建和测试”构建配置中构建 .sln 时,一切正常。但是在“打包和部署”配置中,当我让 MSBuild 直接构建 MyWebProject.csproj 文件时,它似乎正在解析核心 .NET 对 .NET 3.5 程序集的引用,而不是 .NET 4.0 程序集。

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

此外,是什么让我认为它正在使用 v3.5 程序集,是在 TeamCity CoreCompile - Csc 构建活动期间,它说

“[Csc] c:\Program Files\TeamCity\buildAgent\work\651adc4c97432014\packages\DataAnnotationsExtensions.1.0.2.0\lib\NETFramework40\DataAnnotationsExtensions.dll 错误 CS1705:程序集'DataAnnotationsExtensions,版本=1.0.2.0,文化=中性, 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 的引用。有趣的是,我知道它使用的是用于 v4.0 的 MSBuild,因为构建日志指出“使用来自:C:\Windows\Microsoft.NET\Framework\v4.0.30319 的用户定义的 MSBuild”。我的命令行参数,begin 传递给 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 for Windows 7 and .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”。

感谢您的任何帮助,您可以提供!

比利·麦卡弗蒂

4

2 回答 2

12

您要做的是确保在构建项目时设置了一些东西......

我通常将其分为两个步骤

1)构建解决方案
在此步骤中,确保 Visual Studio 版本设置为 2010。

在此处输入图像描述

2) 预构建 Web 在这一步中,我调用命令来构建 Web 项目并生成可部署,设置 msbuild 步骤的框架版本和适当的平台。将目标设置为“ResolveReferences;_CopyWebApplication”构建文件路径应指向 mvc 应用程序的 csproj 文件

在此处输入图像描述

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

system.Configuration => 发布
system.OutputPath => C:\inetpub\wwwroot\foo\bin
system.WebProjectOutputDir => C:\inetpub\wwwroot\foo

于 2012-04-20T16:38:32.687 回答
1

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

在此处输入图像描述

于 2012-04-20T16:38:44.130 回答