2012-10-17 63 views
80

自從我安裝構建服務器之後,我已經有一段時間了,所以也許我已經忘記了一些東西,或許.NET 4.5與我上一次做的任何版本都不同,是我的問題。在搭建服務器的情況下構建ASP.NET 4.5,而不使用Visual Studio

我試圖設置一個構建服務器來監視一個源代碼控制庫。無論什麼時候發生變化,我都希望服務器能夠修改並構建項目。如果沒有錯誤,我想將該站點部署到在生成服務器上運行的網站。

在過去,當我這樣做時,我以爲我能夠做到這一點,只安裝了.NET,但是當我嘗試構建此項目時,出現「C:\ Program Files \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ WebApplications \ Microsoft.WebApplication.targets「缺失,如果我去看看,我可以看到它缺少。實際上,沒有Visual Studio 11目標文件。我經常思考並且頭腦發癢,然後拿出「Windows 8/.NET 4.5 SDK」認爲.NET 4.5 SDK可能會安裝我需要的目標文件,但是除非我以某種方式安裝它錯誤。

那麼,我需要在生成服務器上放置什麼才能使項目生成。我寧願不必安裝完整的Visual Studio 2012.

+0

自從我發佈這個以來,我一直在做一些研究。讓我知道我是否走錯了路。看起來這也是Visual Studio 2010的一個問題,看起來人們通過幾種方式解決了這個問題。一個是安裝Visual Studio Team Explorer。我試過,但我的服務器是Win 2008 r1,VSTE2012不兼容。另一個有點可怕的解決方案是從另一臺機器複製目標文件。這讓我進一步,但現在我得到的錯誤,我的參考程序集丟失,我猜是與原來的問題有關。有另一種方法嗎? – Zack

+3

您正處在正確的軌道上,解決問題的簡單方法是在您的構建服務器上安裝VS 2010。儘管如此,這是一個鈍器。第二種方法是做你正在做的事情,並從另一臺機器獲得目標和相關的依賴關係,並將這些文件部署到服務器上。這種方法的危險在於,VS服務包可能會更改已複製的文件,並且您的開發人員正在使用更新版本時,您的構建服務器將使用這些目標的陳舊版本。 –

+0

你的意思是VS2012?是啊。我會檢查,但我假設它不能與win server 2008 r1比較,因爲團隊資源管理器2012不是,但是雙重檢查。 – Zack

回答

34

我的問題與在Windows 2008 Box上安裝Windows Software Development Kit (SDK) for Windows 8有關。如果您在頁面上進一步閱讀,則會看到標題爲「Windows Vista和Windows Server 2008上的.NET Framework 4.5 SDK工具」的標題。這告訴您:

  1. 在受支持的操作系統(例如Windows 7或Windows 8)上運行Windows SDK for Windows 8安裝程序。
  2. 在指定位置屏幕上選擇以下選項:下載Windows SDK以便在單獨的計算機上進行安裝。
  3. 按下一步按鈕。
  4. 回答關於加入客戶體驗改善計劃(CEIP)屏幕的問題。
  5. 在下一個屏幕上,選擇.NET Framework 4.5軟件開發工具包功能。取消選擇可以取消選中的所有其他功能。
  6. 選擇下載按鈕。
  7. 轉到下載位置(在步驟2中指定),並找到以下.NET框架4.5 SDK工具安裝程序文件: sdk_tools4.msi, sdk_tools4.cab
  8. 可以將這些文件複製到Windows Vista或Windows 2008您的組織內的服務器計算機。這些文件需要複製到Windows Vista或Windows 2008 Server計算機上的同一目錄中。 注意:不要將這些文件重新分發到您的組織之外或作爲任何其他安裝程序的一部分。
  9. 在Windows Vista或Windows 2008 Server計算機上,請查看此處的許可條款。
  10. 檢查計算機上是否已安裝.NET Framework 4.5。否則,請從www.microsoft.com下載並安裝.NET Framework 4.5。
  11. 使用管理員權限打開命令提示符。
  12. 轉到.NET Framework 4.5 SDK Tools安裝程序文件被複制的目錄。
  13. 使用命令行安裝.NET Framework 4.5 SDK工具: Msiexec/i sdk_tools4。微星VSEXTUI = 1
+0

謝謝Swampy。我打算將這個答案標記爲正確的,但我只想提到幾件事情。我不打算測試這個,但你的答案看起來像可能工作。相反,我們只是升級服務器。其次,你知道如果以這種方式進行修復,補丁和服務包發佈時組件可以更新嗎? – Zack

+0

我已經按照這些說明與服務器2008年,但不幸的是,我仍然看到.nlp文件和mscorlib正在使用web部署 – Nathan

+1

部署中包括非常感謝。我正在使用Jenkins,我剛剛更新了我的項目以使用.NET 4.5。當我將工作推給Jenkins時,它沒有抱怨錯誤的版本,它抱怨缺少System.Runtime程序集。我更喜歡這個解決方案,而不是手動拷貝文件,因爲這個解決方案更容易自動化。 –

25

msdn

在Windows SDK不再附帶一個完整的命令行編譯環境。您必須分別安裝編譯器和構建環境。如果您需要包含編譯器和構建環境的完整開發環境,則可以下載Visual Studio 2012 Express,其中包含Windows SDK的相應組件。

爲了解決這個問題,我必須在文件夾C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5從我的開發機器(其中的方式擁有的Visual Studio 2012)複製到生成代理。在此操作之後,Team City沒有報告任何更多錯誤,並且mscorlib.dll未輸出到bin文件夾。

+0

謝謝,這個固定它給我,無需下載sdk。(或接受答案中的任何步驟) – Cohen

+0

真棒,拯救了我的一天! – Magnus

+1

這絕對應該是接受的答案更容易,因爲你肯定已經擁有了一個帶有ref組件的機器 –

81

要在沒有Visual Studio的CI服務器上運行,只需將幾個文件夾從開發機器複製到CI服務器上的相同位置即可。沒有必要安裝SDK。

VS 2015:

  • C:\ Program Files文件(x86)的\的MSBuild \微軟\ VisualStudio的\ v14.0 \ WEB
  • C:\ Program Files文件(x86)的\的MSBuild \微軟\ VisualStudio的\ v14.0 \ web應用

VS 2013:

  • C:\ Program Files文件(x86)的\的MSBuild \微軟\ VisualStudio的\ V12.0 \ WEB
  • C:\ Program Files文件(x86)的\的MSBuild \微軟\ VisualStudio的\ V12.0 \ web應用

VS 2012:

  • C:\ Program Files文件(x86)的\的MSBuild \微軟\ VisualStudio的\ 11.0 \ WEB
  • C:\ Program Files文件(x86)的\的MSBuild \微軟\ VisualStudio的\ v11.0 \ WebApplications

VS 2010:

  • C:\ Program Files文件(x86)的\的MSBuild \微軟\ VisualStudio的\ V10.0 \ WEB
  • C:\ Program Files文件(x86)的\的MSBuild \微軟\的VisualStudio \ V10.0 \ web應用

.NET 4.6:

  • C:\鐠(x86)\ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.6

.NET 4.5。2:

  • C:\ Program Files文件(x86)的\參考大會\微軟\框架\ .NETFramework \ v4.5.2

.NET 4.5.1:

  • C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.5.1

.NET 4.5:

  • C:\ Program Files文件(x86)的\參考大會\微軟\框架\ .NETFramework \ V4.5

.NET 4.0.1:

  • C:\ Program Files文件(x86)的\參考大會\微軟\框架\ .NETFramework \ V4.0.1

.NET 4.0:

  • C:\ Program Files文件(x86)的\參考大會\微軟\框架\ .NETFramework \ V4.0

或者,如Matt suggested,你可以將它們拷貝插入到項目的子目錄中,並更改MSBuild中的<MSBuildExtensionsPath32>位置(通常爲.csproj.vbproj)文件。

一旦你做完了這個,你的項目就會編譯完成。

您還應該將VisualStudioVersion環境變量明確地設置爲Visual Studio版本(VS2010的10.0,VS2012的11.0,VS2013的12.0,VS2015的14.0),以確保它在您的配置中正確設置。

+6

這爲我們+1解決了問題。來自maven/java這是堅果。 – NimChimpsky

+0

未與.NET Framework一起安裝的參考程序集? MSBuild目標不是。我不確定參考大會,我認爲是的。 – Kiquenet

+0

從開發者機器複製C:\ Program Files文件(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0到生成機器上的同一個文件夾在Team City無法編譯.NET 4.5解決方案後, 4.0解決方案早些時候編譯。 –

4

我用Visual Studio Agents解決了這個問題。

你可以嘗試安裝Visual Studio 2012年代理

http://www.microsoft.com/en-us/download/details.aspx?id=38186

+0

不適用於VS2013。我安裝了代理和控制器,但未創建C:\ Program Files文件(x86)\ MSBuild \ Microsoft \ VisualStudio \ v12.0 – Guillaume

+1

[Visual Studio 2013代理](http://www.microsoft.com/en-gb /download/details.aspx?id=40750)當然也是可用的 - 對於那些閱讀VS 2013而不是VS 2012的答案。 – J0e3gan

+2

它確實有效! 你只需要安裝Visual Studio 2013 Shell(隔離)(x86) 而不是Visual Studio 2013 Shell(Integrated)(x86) – Andrii

12

Microsoft Build Tools 2013將有助於在這種情況下,它的下載頁面描述:

如果你沒有安裝Visual Studio在您的計算機上,您可以使用Build Tools 2013構建託管應用程序。此下載中還包含Visual Basic 和C#編譯器。 (在早期版本的 ,這些工具被列入獨立的.NET框架 )

+1

多一點解釋可能有助於程序員們瞭解引用鏈接是如何工作的。將來引用鏈接可能不再存在。 – Daenarys

+0

針對VS 2013的Microsoft Build Tools 2013以及** VS VS 2012 **?無論如何,最好安裝** Microsoft Build Tools **或** Visual Studio Agents 2012 ** http://stackoverflow.com/a/20373256/206730? – Kiquenet

7

我的部門。喜歡採用簡約的方法來安裝我們的Win 7構建機器上的內容。但是,由於潛在的註冊表鍵問題,我們不喜歡只複製和粘貼文件/文件夾。我沒有安裝VS 2013,而是安裝了以下更小和免費的組件。現在開發團隊可以成功構建VS 2013 Web應用程序。

+0

非常感謝。我一直想知道如何獲得'Microsoft.WebApplication.targets',我從來不知道那個獨立的Shell! –

相關問題