asp.net-mvc - 如何让 TeamCity 与 ASP.NET MVC 3 Web 项目配合使用

标签 asp.net-mvc asp.net-mvc-3 continuous-integration teamcity

我目前正在与 TeamCity 进行较量,试图让两个构建配置适用于 ASP.NET MVC 3 解决方案。我的设置与 http://www.troyhunt.com/2010/11/you-deploying-it-wrong-teamcity_26.html 中的指导几乎相同。当它在第一个“构建和测试”构建配置中构建 .sln 时,一切都运行良好。但在“打包和部署”配置中,当我让 MSBuild 直接构建 MyWebProject.csproj 文件时,它似乎正在解析对 .NET 3.5 程序集的核心 .NET 引用,而不是 .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 error CS1705: Assembly 'DataAnnotationsExtensions, Version=1.0.2.0, Culture=neutral, PublicKeyToken=358a5681c50fd84c' uses 'System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' which has a higher version than referenced assembly '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”。我的命令行参数开始传递给 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”。

感谢您提供的任何帮助!

比利·麦卡弗蒂

最佳答案

您要做的就是确保在构建项目时设置了一些事情...

我通常将其分为两个步骤

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

enter image description here

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

enter image description here

最后一个必需的步骤是设置一些构建参数。

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

关于asp.net-mvc - 如何让 TeamCity 与 ASP.NET MVC 3 Web 项目配合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10249302/

相关文章:

continuous-integration - Bamboo 远程代理 : HTTP 404 on fingerprint request

asp.net - 带有/Google OAuth 登录的 ASP.NET MVC 白名单

asp.net-mvc - asp.NET : Unknown length MVC paths

asp.net-mvc-3 - ASP.NET MVC 3.0 图表 高级图表

asp.net - 使用验证来指示多个选项卡上的错误

asp.net-mvc - MVC 下领域驱动设计的替代方案是什么

docker - 如何在gitlab-ci中缓存部署镜像?

.net - .NET 的轻量级持续集成服务器

c# - DataTables - 水平滚动条部分覆盖最后一行

asp.net - 无法将 ASP.NET Core Web 应用程序与 Application Insights 连接