使用微软的MSBuild.exe编译VS .sln .csproj 文件
最近在看一些算法和测试一些程序,以及帮团队测试程序,团队使用了vs开发环境创建的sln项目文件,我使用的是公司的机器,没有任何权限安装程序等操作,但是又需要编译一些程序,所以我想到了,使用MSBuild.exe进行编译。
如果你的机器上没有装有VisualStudio,那么可以使用MSBuild来build .sln或project。可以不用安装vs程序,MSBuild可以通过安装.NETFramework来安装,一般的安装路径为C:\Windows\Microsoft.NET\Framework。其实devenv执行build时候,后台也是调用MSBuild来build的。
可以使用msbuild /?来查看详细的帮助;
今天就简单的介绍下使用MSBuild.exe编译程序的方法:
- 确认你使用的vs的版本,这个可以从sln文件中看到,不会看的可以查百度
- 确认你本机已经安装了那个版本的MSBuild.exe程序,具体的可以使用dir查看,如:C:\>dir /s /b /d MSBuild.exe 可以查看本机各个版本。
- 使用对应版本的MSBuild.exe编译sln文件,例如编译vs2015编写的程序:
- %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe "c:\test\test1.sln" /property:Configuration=Debug /t:build /p:VisualStudioVersion=14.0
说明:如果你想编译单个文件,或者是测试某段程序算法等,可以不用考虑使用那个版本的MSBuild.exe程序。
简单实例:
同样注意,如果project引用了其他的projects的时候,最好build整个.sln。
=================================================================================================
参考如下:
背景:VS很好很强大,但太费系统资源了,尤其是在虚拟机在里面装VS的时候更是如此。有时用vi编辑了源代码后,不想开VS IDE编译,但每次打开VS命令行,再切换到工程所在目录,然后手动敲命令太麻烦了。于是产生了集成集成VS命令行编译到.sln文件右键菜单的想法。
直接上图:
本版本支持 Win10 + VS2015
出处:http://www.cnblogs.com/crazybird/p/5103906.html
======================================================
临时手写了个,可以参考吧
- @ECHO OFF
- set ms="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe"
- cls
- %ms% /version
- color 0c
- ECHO.
- ECHO.
- echo Do you use this version of MSBuild.exe to compile the current program? Close this window if you don't compile.
- pause
- color
- GOTO End
- IF /I "%1"=="Debug" GOTO BuildDebug
- IF /I "%1"=="Release" GOTO BuildRelease
- IF /I "%1"=="All" GOTO BuildAll
- IF /I "%1"=="Minimal" GOTO BuildMinimal
- :ER
- ECHO.
- ECHO Raspkate Command-Line Build Tool v1.
- ECHO.
- ECHO Usage:
- ECHO build.bat Debug
- ECHO Builds the Raspkate with Debug configuration.
- ECHO.
- ECHO build.bat Release
- ECHO Builds the Raspkate with Release configuration.
- ECHO.
- GOTO End
- :BuildDebug
- %ms% /p:Configuration="Debug";TargetFrameworkVersion="v4.5.2" Raspkate.sln
- GOTO End
- :BuildRelease
- %ms% /p:Configuration="Release";TargetFrameworkVersion="v4.5.2" Raspkate.sln
- GOTO End
- :BuildAll
- %ms% /p:Configuration="All";TargetFrameworkVersion="v4.5.2" Raspkate.sln
- GOTO End
- :BuildMinimal
- %ms% /p:Configuration="Minimal";TargetFrameworkVersion="v4.5.2" Raspkate.sln
- GOTO End
- :End
- @ECHO ON
优化版本
- @ECHO OFF
- :: 建议使用开发时使用VS的版本对应的MSBuild.exe程序
- set ms="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe"
- cls
- %ms% /version
- ECHO,
- IF /I "%1"=="Debug" GOTO BuildDebug
- IF /I "%1"=="Release" GOTO BuildRelease
- IF /I "%1"=="All" GOTO BuildAll
- IF /I "%1"=="Minimal" GOTO BuildMinimal
- color 0c
- ECHO,
- ECHO,
- echo Do you use this version of MSBuild.exe to compile the current program? Close this window if you don't compile.
- echo,&&echo :Building projects with Debug models
- echo,&&echo :Building projects with Release models
- echo,&&echo :Building projects with Minimal models
- echo,&&echo :Building projects with All models
- echo;
- set /p buildType=Please enter number of your build mode :
- ::pause
- color
- ::GOTO End
- IF /I "%buildType%"=="" GOTO BuildDebug
- IF /I "%buildType%"=="" GOTO BuildRelease
- IF /I "%buildType%"=="" GOTO BuildMinimal
- IF /I "%buildType%"=="" GOTO BuildAll
- :ER
- ECHO,
- ECHO MSBuild.exe Command-Line Build Tool v1.
- ECHO,
- ECHO Usage:
- ECHO build.bat Debug
- ECHO Builds the Solution or Project with Debug configuration.
- ECHO,
- ECHO build.bat Release
- ECHO Builds the Solution or Project with Release configuration.
- ECHO,
- GOTO End
- :BuildDebug
- echo you chose Debug build
- %ms% /p:Configuration="Debug" Car.sln
- echo you chose Debug build completed
- GOTO End
- :BuildRelease
- echo you chose Release build
- %ms% /p:Configuration="Release" Car.sln
- echo you chose Release build completed
- GOTO End
- :BuildAll
- echo you chose All build
- %ms% /p:Configuration="All" Car.sln
- echo you chose All build completed
- GOTO End
- :BuildMinimal
- echo you chose Minimal build
- %ms% /p:Configuration="Minimal" Car.sln
- echo you chose Minimal build completed
- GOTO End
- :End
- pause
- @ECHO ON
使用微软的MSBuild.exe编译VS .sln .csproj 文件的更多相关文章
- VS .sln .csproj 文件的右键编译
背景:VS很好很强大,但太费系统资源了,尤其是在虚拟机在里面装VS的时候更是如此.有时用vi编辑了源代码后,不想开VS IDE编译,但每次打开VS命令行,再切换到工程所在目录,然后手动敲命令太麻烦了. ...
- 如何使用 MSBuild.exe 生成解决方案中的特定目标
以前都是直接使用VS或者msbuild生成整个解决方案,或者只构建单个工程. 这回使用msbuild构建单个工程的时候出现了问题,因为工程中使用了SolutionDir这个宏来定位第三方库路径. 对于 ...
- 使用msbuild.exe绕过应用程序白名单(多种方法)
一.MSbuild.exe简介 Microsoft Build Engine是一个用于构建应用程序的平台.此引擎也被称为msbuild,它为项目文件提供一个XML模式,该模式控制构建平台如何处理和 ...
- 使用CSC.EXE编译第一个HELLO WORLD
坐的没事,下了个C#2008,看帮助文件写了个HELLO.CS的源文件: //hello.cs //Show "Hello Word!" using system; class h ...
- 调用Visual Studio的cl.exe编译C/C++程序
@ 目录 调用Visual Studio的cl.exe编译C/C++程序 前言 1.查看VS的路径 2.添加环境变量 3.查看设置是否生效 4.配置Notepad++ 调用Visual Studio的 ...
- 用资源管理器右键编译 Visual Studio 解决方案文件
每次改动 VC 工程之后都要重新编译,每次 VS 又会生成调试数据库文件,很费时间,于是研究了一下如何在资源管理器中直接编译,还真发现了解决办法. 以下是适用 Visual Studio 2008 的 ...
- 几种工具反编译被编译好的DLL文件
我们平时在工作中经常会遇到一些已经被编译后的DLL,而且更加麻烦是没有源代码可以进行修改,只能针对这个DLL的文件进行修改才能得到我们想要的结果:本文将通过一个实例来演示如果完成一个简单的修改;我们将 ...
- gcc for windows(mingw)编译多个c文件
myString.c myString.h main.c 其中,myString.c与myString.h对应,myString.h文件中是一些函数的声明,而myString.c文件中是.h文件中声明 ...
- [vim配置]windows下在vim中使用gcc/g++编译调试c/cpp文件
在Linux里面混了一个多月,vim编程用得甚爽.无奈前天将Linux里面的编程文件夹误删,而技术不精无法找回,悲痛欲绝.再者,无限怀念windows里面的游戏,并觉得现在在Linux里面也学不到什么 ...
随机推荐
- 0927-转载:SSM:spring+springmvc+mybatis框架中的XML配置文件功能详细解释
这篇文章暂时只对框架中所要用到的配置文件进行解释说明,而且是针对注解形式的,框架运转的具体流程过两天再进行总结. spring+springmvc+mybatis框架中用到了三个XML配置文件:web ...
- bzoj 1623: [Usaco2008 Open]Cow Cars 奶牛飞车
1623: [Usaco2008 Open]Cow Cars 奶牛飞车 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 325 Solved: 223[S ...
- SpringBoot 通用返回类设计
在项目中通常需要为前端设计通过的返回类,返回的格式为: { "status": "success", "data": {...} } 定义通 ...
- Python 类的三大特性的综合运用 案例
# --------------------- 类的三大特性的综合运用 案例 ------------------------- # 定义三个类:小狗,小猫,人 # 小狗:姓名,年龄(默认1岁) 吃饭 ...
- [算法]Plus One
Question: Given a non-negative number represented as an array of digits, plus one to the number. The ...
- C语言中链接影响程序的细节
参考:<深入理解计算机系统> 7.61节 链接器如何解析多重定义的全局符号 基本的原则是这样的:对于所有的全局符号,函数和已初始化的全局变量是强符号,未初始化的全局变量是弱符号. Un ...
- HTML5 ——web audio API 音乐可视化(二)
上一篇 web audio API 音乐可视化(一)介绍了一些基本的API,以及如何简单的播放一个音频,本篇介绍一下怎么对获取到的音频进行分析,并将分析后的数据绘制成图像. 最终效果请戳这里; 完整版 ...
- DatePicker日期与时间控件
DatePicker日期与时间控件 一.简介 二.方法 最日常的使用方法了 日期控件DatePicker 时间控件TimePicker 月份从0开始 三.代码实例 效果图: 代码: fry.Activ ...
- git一个系列教程
https://git-scm.com/book/zh/v1/%E8%B5%B7%E6%AD%A5-%E5%85%B3%E4%BA%8E%E7%89%88%E6%9C%AC%E6%8E%A7%E5%8 ...
- Python globals() locals() vars() 三个内建函数的区别
首先参考官方文档对这三个函数的介绍: 2. Built-in Functions – Python3.5 1.globals() 返回当前全局符号表, 通常是返回当前模块下的全局符号表, 比如全局内建 ...