通过命令行构建 Visual Studio 项目
Posted
技术标签:
【中文标题】通过命令行构建 Visual Studio 项目【英文标题】:Build Visual Studio project through the command line 【发布时间】:2011-08-05 21:36:49 【问题描述】:我从 Windows Server 2008 安装运行 ASP.NET 网站,我喜欢通过命令行编辑页面,因为我通过 ssh 进入服务器。
我在服务器上安装了Vim,以便我可以轻松地编辑文件。如果我编辑 html 和 CSS 以及 .aspx 页面,则更新成功。但是如果我想编辑源代码,我将不得不重建项目。重建项目可以很好地重新编译所有内容并更新网络上的副本。这是一个开发服务器,所以更新一切都很好,因为没有人看到这个服务器。
如何通过命令行构建项目来更新源代码并在服务器上构建?
该项目是用 C# 编写的,所有文件都在 wwwroot
文件夹中,因此在构建后无需进行文件移动。
【问题讨论】:
【参考方案1】:安装 .NET SDK 并使用 MsBuild.exe 命令行工具。它是您构建项目或解决方案时 Visual Studio 使用的。
【讨论】:
不一定。至少 Visual Studio 能够构建一些 MSBuild 无法构建的项目类型(例如,设置项目)。不过,您可以调用devenv
进行编译。
我相信 msbuild.exe 附带 ~~Framework~~ (仅)安装,而不是 ~SDK。见csharp411.com/where-to-find-msbuild-exe。它开始包含在 2.0 及更高版本中。 Aka,SDK 安装可能是不必要的。
Joey 是正确的,msbuild.exe 将构建〜大多数应用程序。这是我遇到的 msbuild.exe 不起作用的示例。 “.rulep”是自定义 IBM 应用程序(项目)类型,必须使用 devenv.exe ibm.com/developerworks/forums/… 构建
我安装了 .net sdk,但是当我在 cmd 中键入 msbuild 或 msbuild.exe 时,环境变量仍未注册
您是否查看或尝试过本文后面列出的 .bat 文件解决方案?【参考方案2】:
创建一个名为 .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 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=
XCOPY .\MyProject\Bin\Release\*.* .\BuildResults\
这样,您删除一个目录(只是为了确保您获得超级干净的构建),创建它,构建解决方案/项目,然后将构建结果复制到新目录。
每次都超级新鲜。如果构建失败,\BuildResults 目录是空的。
还有一个微妙的小指标,\BuildResults 目录的日期时间是您最后一次构建(或尝试构建)解决方案/项目的时间。微妙,但有时很有帮助。
【讨论】:
使用 Visual Studio 命令提示符,我能够在不创建 .bat 文件的情况下构建我的解决方案。MSBuild "MySolution.sln" /P:Configuration=Debug
granadaCoder 实际上 .bat 文件很棒,因此不必继续使用 Visual Studio 命令提示符。也很高兴拥有该日志文件。谢谢
另一个有用的设置是/t:Clean,Build
这将清理和重建msbuild.exe MySolution.sln /t:Clean,Build
Clean and Build 上的好发现!
我在答案中添加了 RD .\MyProject\Bin\Release\ /S /Q 来解决这个问题。好点,谢谢,。【参考方案3】:
也许用这个命令:
>> devenv myproject.sln /Build "Release|x86"
您可以在“C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe”路径中找到 devenv。
【讨论】:
使用Visual Studio命令提示符(Developer Command Prompt)无需查找devenv.exe的路径【参考方案4】:我使用了上面@granadaCoder 对答案的修改。
对于 .NET 4.5 及以上版本,在
中没有对应的构建目录%WINDIR%\Microsoft.NET\Framework\
并且将 MSBuild 用于较旧的框架不会让您编译较新的结构,例如插值字符串。
要解决这个问题,您需要安装最新的 MS Build Tools
(目前为 2015)并在
MSBuild.exe
%programfiles(x86)%\MSBuild\14.0\Bin
【讨论】:
感谢您及时更新答案............随着 msbuild.exe 位置的变化。 您还必须将%msBuildDir%\msbuild.exe
放在双引号中以上是关于通过命令行构建 Visual Studio 项目的主要内容,如果未能解决你的问题,请参考以下文章
.Net Core Visual Studio 项目命令行构建与右键构建相同
swig 和使用 Visual Studio 2017 命令行构建项目