2011-04-14 140 views
20

我從Windows Server 2008安裝中運行ASP.NET網站,並且我喜歡通過命令行編輯頁面,因爲我將ssh放入服務器。通過命令行構建Visual Studio項目

我在服務器上安裝了Vim,這樣我就可以輕鬆編輯這些文件。如果我編輯HTML和CSS和.aspx頁面,則更新成功。但是如果我想編輯源代碼,我將不得不重建項目。重建項目會很好地重新編譯所有內容並更新網頁上的副本。這是一個開發服務器,因此沒有人看到這個服務器,所以一切正常。

如何通過命令行構建項目來更新源代碼並在服務器上構建?

該項目是用C#編寫的,並且這些文件都在wwwroot文件夾中,因此在構建之後不需要移動文件。

+1

你沒有接受任何答案? – 2016-11-24 10:36:51

+0

@ user708774你的問題得到了解答嗎? – 2018-02-15 17:33:16

回答

2

安裝.NET SDK並使用MsBuild.exe命令行工具。這是Visual Studio在構建項目或解決方案時使用的內容。

+0

不一定。至少Visual Studio能夠構建一些MSBuild無法使用的項目類型(例如,安裝項目)。不過,您可以調用'devenv'編譯。 – Joey 2011-04-14 22:07:48

+1

我相信msbuild.exe帶有~~ Framework(僅)安裝,而不是〜SDK。請參閱http://www.csharp411.com/where-to-find-msbuild-exe/。它開始包含在2.0及之後。也就是說,SDK安裝可能是不必要的。 – granadaCoder 2011-04-15 14:08:45

+0

Joey是正確的,msbuild.exe將構建〜大多數應用程序。這裏是我運行msbuild.exe不會工作的一個例子。 「.rulep」是一個自定義IBM應用程序(項目)類型,必須使用devenv.exe構建http://www.ibm.com/developerworks/forums/thread.jspa?messageID=14402518&tstart=0 – granadaCoder 2011-04-15 14:10:56

35

創建一個名爲.bat文件: Manual_MSBuild_ReleaseVersion.bat

在.bat文件將這個。

REM you'll have to find the "latest" version of where msbuild.exe resides on your machine.. here are some popular versions/locations 
REM set msBuildDir=%WINDIR%\Microsoft.NET\Framework\v2.0.50727 
REM set msBuildDir=%WINDIR%\Microsoft.NET\Framework\v3.5 
REM set msBuildDir=%WINDIR%\Microsoft.NET\Framework\v4.0.30319 
REM set msBuildDir=C:\Program Files (x86)\MSBuild\12.0\Bin 
set msBuildDir=C:\Program Files (x86)\MSBuild\14.0\Bin 

call "%msBuildDir%\msbuild.exe" MySolution.sln /p:Configuration=Release /l:FileLogger,Microsoft.Build.Engine;logfile=Manual_MSBuild_ReleaseVersion_LOG.log 
set msBuildDir= 

您可以構建.sln文件或.csproj文件。 MySolution.sln或MyProject.csproj

請參閱How to: Use MSBuild to Create a Web Package瞭解更多信息。

你可以把它一步:

rd .\BuildResults /S /Q 
md .\BuildResults 
rd .\MyProject\Bin\Release /S /Q 

REM set msBuildDir=%WINDIR%\Microsoft.NET\Framework\v3.5 
set msBuildDir=%WINDIR%\Microsoft.NET\Framework\v4.0.30319 
call %msBuildDir%\msbuild.exe MySolution.sln /p:Configuration=Release /l:FileLogger,Microsoft.Build.Engine;logfile=Manual_MSBuild_ReleaseVersion_LOG.log 
set msBuildDir= 

XCOPY .\MyProject\Bin\Release\*.* .\BuildResults\ 

這樣一來,刪除目錄(只是爲了確保你得到一個超級乾淨的構建),創建,構建解決方案/項目,然後複製構建到新目錄的結果。

超新鮮,每一次。如果構建爆炸,\ BuildResults目錄是空的。

而一個微妙的小指示器,\ BuildResults目錄的日期時間是您最後一次構建(或試圖構建)解決方案/項目的時間。微妙,但有時很有幫助。

+2

,我能夠在不創建.bat文件的情況下構建我的解決方案。 'MSBuild「MySolution.sln」/ P:配置=調試' – zulucoda 2011-12-06 14:15:05

+0

granadaCoder其實.bat文件真棒,因此不必繼續前往Visual Studio命令提示符。也很高興有這個日誌文件。謝謝 – zulucoda 2011-12-07 09:14:47

+0

一旦你開始這樣做,你通常不會回去。一次性設置,可重複的結果。 – granadaCoder 2011-12-08 21:36:40

4

也許用這個命令:

>> devenv myproject.sln /Build "Release|x86" 

您可以找到devenv的在 「C:\ Program Files文件(x86)的\微軟的Visual Studio 10.0 \ Common7 \ IDE \ devenv.exe的」 路徑。

6

我用上面的@granadaCoder修改了答案。

對於.NET 4.5版本開始,就在

%WINDIR%沒有相應的構建目錄\ Microsoft.NET \框架\

和使用的MSBuild對於較舊的框架不會讓您可以編譯更新的結構,例如插入的字符串。

來解決這個問題,你需要安裝最新的MS Build Tools(目前2015年)和

%PROGRAMFILES(86)%\ MSBuild的使用MSBuild.exe \ 14.0 \斌

+1

感謝您保持最新的答案........與msbuild.exe位置的變化。 – granadaCoder 2017-03-16 12:59:34

+0

您還必須將'%msBuildDir%\ msbuild.exe'放在雙引號中 – jpaugh 2017-06-01 22:01:13

相關問題