2011-04-14 139 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

相关问题