通过命令行构建Visual Studio项目
我从Windows Server 2008安装运行ASP.NET网站,我喜欢通过命令行编辑页面,因为我进入服务器。
我在服务器上安装了Vim ,以便我可以轻松编辑文件。 如果我编辑HTML和CSS以及.aspx页面,则更新成功。 但如果我想编辑源代码,我将不得不重建项目。 重建项目可以很好地重新编译所有内容并更新Web上的副本。 这是一个开发服务器,所以更新到一切都很好,因为没有人看到这个服务器。
如何通过命令行构建项目以更新源代码并在服务器上构建?
该项目是用C#编写的,文件都在wwwroot
文件夹中,因此在构建之后不需要进行文件移动。
创建一个名为:Manual_MSBuild_ReleaseVersion.bat的.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
有关详细信息,请参见如何:使用MSBuild创建Web包 。
你可以更进一步:
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目录的日期时间是您最后一次构建(或尝试构建)解决方案/项目。 微妙但有时有帮助。
也许用这个命令:
>> devenv myproject.sln /Build "Release|x86"
您可以在“C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ devenv.exe”路径中找到devenv。
我上面用@granadaCoder修改了答案。
对于.NET 4.5版本,没有相应的构建目录
%WINDIR%\ Microsoft.NET \框架\
并且使用MSBuild作为旧框架将不允许您编译更新的构造,如插值字符串。
要解决这个问题,您需要安装最新的MS Build Tools
(2015年版)并使用MSBuild.exe
%PROGRAMFILES(x86)的%\的MSBuild \ 14.0 \宾
安装.NET SDK并使用MsBuild.exe命令行工具。 这是Visual Studio在构建项目或解决方案时使用的。