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