msbuild编译
Ⅰ msbuild是干什么的我系统里面没有,哪里能下载
类似make的东西,不过可以直接从项目解决方案来编译。
在开始——所有程序——Microsoft Visual Studio 2012——Visual Studio Tools——VS2012 开发人员命令提示
然后在弹出来的黑窗口里面运行这个开源库的编译脚本
Ⅱ MSBuild是什么文件有什么用能不能删除掉啊
可以删除,因为MSBuild不是系统文件。
MSBuild 是 Microsoft 和 Visual Studio的生成系统,它不仅仅是一个构造工具,应该称之为拥有相当强大扩展能力的自动化平台,MSBuild平台的主要涉及到三部分:执行引擎、构造工程、任务。普通用户用不到是可以删除的。
(2)msbuild编译扩展阅读:
MSBuild 引入了一种新的基于 XML 的项目文件格式,这种格式容易理解、易于扩展并且完全受 Microsoft 支持。
MSBuild 项目文件的格式使开发人员能够充分描述哪些项需要生成,以及如何利用不同的平台和配置生成这些项。
另外,项目文件的格式还使开发人员能够创作可重用的生成规则,这些规则可以分解到不同的文件中,以便可以在产品内的不同项目之间一致地执行生成。以下各节描述了 MSBuild 项目文件格式的一些基本要素。
MSBuild 编译后生成的是.exe 可执行文件,但却不能生成.msi 安装包文件。如果想要使用MSBuild 生成安装包文件,还需要借助WiX编辑一个wxs类型的工程。
Ⅲ 使用MSBuild编译与使用VS编译有什么不同吗
MSBuild简介
Visual Studio的编译引擎是 MSBuild ,它提供了一套项目文件( .csproj , .vbproj , vcxproj )的XML的Schema,用来指定如何处理和编译项目。
当然MSBuild不依赖于Visual Studio,完全可以在不安装Visual Studio的情况下使用MSBuild。比如可以从 Microsoft Build Tools 2015 下载MSBuild来编译C#。2016年3月31号微软也宣布了 Visual C++ Build Tools 2015 ,可以 下载 来编译VC++的项目。
MSBuild也是一个MIT License的开源软件,可以在Github上看到它的 仓库 。
MSBuild Toolset (ToolsVersion) 是一个任务、目标和工具的集合,指定MSBuild的行为。通常一个MSBuild的Toolset包含 microsoft.common.tasks 文件, microsoft.common.targets 文件和编译器比如 csc.exe , cl.exe 和 link.exe 。
Ⅳ 如何使用C++Builder编译Delphi使用Obj文件
一直以来,Delphi 都可以用命令行 dcc32 ProjectName.dpr 对项目进行编译链接,非常方便,Delphi对项目文件的参数配置处理的很简单,便于阅读处理起来也很直观,编译的中间文件也很简单(dcu,dcp)。
而C++Builder就没那么幸运了,因为包含了C++的特征,各种编译的中间文件:lib,obj,res,map,tds。后来新版又增加了一些预编译文件:ilc,ild,ilf,...,pch,#00,...等等等等,各种搜索路径(Include Path,Library Path,Browse Path...),要是用bcc32及ilink32手工进行编译链接,命令的参数都足够写上大半天。幸好,在旧版C++Builder中,如果要用命令行编译BCB项目,只要将bpr文件转换为mak文件,再使用make命令进行编译链接也比较方便,不需要过多的处理:
[plain] view plainprint?
bpr2mak -oProject1.mak Project1.bpr
make -fProject1.mak
自从Delphi/C++Builder开始使用 MSBuild* 编译系统后(好像是RAD Studio 2006开始,具体忘记了),Delphi项目在保存为dpr的同时,也会保存一份dproj的项目文件,dpr依旧沿用旧格式,dproj 则以MSBuild规范以XML格式保存,除了可以用旧方式命令行编译dpr外,也可以用:
[plain] view plainprint?
msbuild.exe /t:Rebuild /p:Config=Debug ProjectName.dproj
进行编译,但msbuild必须设定一些环境变量,RAD Studio自带了一个命令行工具已经做好了这些,其实就是设定了以下几个环境变量($(BDS)\bin\rsvars.bat):
[plain] view plainprint?
@SET BDS=C:\Embarcadero\RAD Studio\7.0
@SET BDSCOMMONDIR=C:\Users\Public\Documents\RAD Studio\7.0
@SET FrameworkDir=C:\Windows\Microsoft.NET\Framework\v2.0.50727
@SET FrameworkVersion=v2.0.50727
@SET FrameworkSDKDir=
@SET PATH=%FrameworkDir%;%FrameworkSDKDir%;%PATH%
@SET LANGDIR=EN
C++Builder则又更杯具了一些,bpr2mak.exe工具已经没有了,所以只能采用MSBuild进行命令行编译。更加杯具的是,随着Delphi和BCB被多次转卖收购,新版本的发布似乎总会有各种各样的Bug,比如手头的RAD Studio 2009进行命令行编译,Delphi正常,BCB则报出超过100个错误,类似如下:
[plain] view plainprint?
C:\Embarcadero\RAD Studio\7.0\Bin\CodeGear.Cpp.Targets(2175,3): error : Error: Unresolved external '__fastcall Strhlpr::UnicodeFree(System::UnicodeString&)' referenced from C:\EMBARCADERO\RAD STUDIO\7.0\LIB\DEBUG\VCLE.LIB|ustring
C:\Embarcadero\RAD Studio\7.0\Bin\CodeGear.Cpp.Targets(2175,3): error : Error: Unresolved external 'Typinfo::BooleanIdents' referenced from C:\EMBARCADERO\RAD STUDIO\7.0\LIB\DEBUG\VCLE.LIB|vclinit
检查了一下发现编译过程(bcc32.exe)没有问题,只是在ilink32.exe链接过程中报错,在IDE中打开此项目进行编译,查看Message->Output窗口,比较两者的ilink32命令行参数,发现两者有两个地方有明显差异,一个是IDE生成的命令中没有类似 C:\Embarcadero\RAD Studio\7.0\lib\EN\debug 的路径(指的是EN这个目录,去除上面rsvars.bat中的@SET LANGDIR=EN 就可以避免产生这样的搜索路径) ,但是虽然这个目录不存在,也应该不至于导致出错。第二个差异是缺少了rtl.bpi和vcl.bpi的附加obj参数,解决办法是在$(BDS)\bin目录中找到 CodeGear.Cpp.Targets 文件,用记事本打开,搜索字符“memmgr.lib“,在前面加上"rtl.bpi;vcl.bpi" (用;分隔,不含引号),一共有两处要修改。或者查找 "c0w32",在后面加上 "rtl.bpi;vcl.bpi",只有一处修改 —— 因为IDE的命令行中 rtl.bpi vcl.bpi是在c0w32和memmgr.lib中间的。—— (注意:在XE2中,加在c0w32后面已经不管用了,编译会报另一个错误VCL.BPIW.OBJ不存在,Targets文件有很大变化,可能参数的位置变动过了,导致与其他参数混在一起,所以还是加到memmgr.lib处更加合理)。
一些组件包比如DevExpress的Package,没有dproj或者cproj 项目文件,只能通过IDE进行转换,但坑爹的是bpk在好几个版本以前(CRS 2007?)已经不支持bpk项目,根本打不开也谈不上转换了,但它其实是一个make文件,可惜用make命令编译还是要出错,不想去研究了。总之,BCB永远活在Delphi的阴影下。
Ⅳ VS2005 debug编译和msbuild编译 有什么区别
用aspnet_compiler发布网站在asp.net 2.0模型中,vs2005已经完全脱离了编译而成为了一个彻底的ide.算是一个不小的改动。其中更是取消了有关Web Application的概念,使得习惯了vs2003的人刚开始的时候会有一些摸不着头脑。下面简单说一下我在使用过程中自己总结的,算是一点经验。
新建web工程并且位置是文件系统的时候,vs2005只是帮你建好了一个sln文件,这个东西只是指引msbuild 如何进行编译的,过程是:ide 调用 msbuild ,msbuild解析sln文件,msbuild调用aspnet_compiler.exe进行网站的编译。所以aspnet_compiler.exe只是负责进行网站的编译的。
预编译的概念在 .netframework 1.1 里面就存在了,vs2003中的预编译指的是将页面对应的cs/vb文件与resx文件编译后统一集成到一个dll中放到bin目录下,将aspx文件直接拷贝过去。这样做会留下隐患,因为aspx文件就直接暴露在最后的发行包中,如果完全是codeb-behind模型还好,只能改改界面,如果采用了页面上的来生成页面,源代码就暴露了。针对这些问题,vs2005采用了一种新的模式。
请参看ASP.NET 编译工具 (Aspnet_compiler.exe) 这篇文章了解对各种文件的处理方式。
IDE发布:
vs2005中选择 生成-〉发布网站,在对话框中的操作将映射到aspnet_compiler.exe的参数中,可更新的发布对应 -u,其他选项类似,请参考上面的文章了解。
注意:发布时将忽略web.config中的debug参数,统一生成无调试信息的文件。
手工编译:
简单说来,如果是无更新发布模式编译,appcode下面的class编译成dll放在bin下,页面内容清空位置不变作占位用,同时页面被编译成一个随机名称的dll,增加一个同名.compiled文件到bin目录下,内容大概如下:
<?xml version="1.0" encoding="utf-8"?>
<preserve resultType="3" virtualPath="/Forum/AdminList.aspx" hash="6772609c3" filehash="49154463f1d6738c" flags="110000" assembly="App_Web_hmrycg3w" type="ASP.forum_adminlist_aspx">
<filedeps>
<filedep name="/Controls/footer.ascx" />
<filedep name="/Controls/header.ascx" />
<filedep name="/Forum/AdminList.aspx" />
<filedep name="/Forum/AdminList.aspx.cs" />
<filedep name="/Forum/menu.ascx" />
<filedep name="/Forum/menu.ascx.cs" />
</filedeps>
</preserve>
里面只是列出了页面上的customcontrol,这里已经完成了和masterfile的映射。这样最大限度的保护了页面的敏感信息,发布过的网站中只能看见一堆文件名了。可更新的发布模式与vs2003类似,页面就直接拷贝过来不予编译了。
讲了一堆原理,下面说一下aspnet_compiler.exe的调用方法,这是我使用的例子
我的开发目录是这样的
Project/
library/
devroot/
pubroot/
proj.sln
使用的命令如下:
aspnet_compiler -v / -p .\devroot -f .\pubroot
分析:
-v / 指明了iis的虚拟目录
-p .\devroot 表示代码实际位置
.\pubroot 指明了要发布的位置
-f 表示强制改写目标位置
你还可以用-u来进行传统意义上的预编译,-d来插入编译符号。
总的来说,aspnet_compile结合msbuild,提供了一个很好的自动化编译环境,值得研究研究:)
Ⅵ 如何:在命令提示符处进行编译求解答
使用.NET Framework SDK 提供的 Visual C# 和 Visual Basic 编译器。本主题介绍如何使用批处理文件针对 .NET Compact Framework 程序集而非 .NET Framework 全功能版(桌面)程序集在命令提示符处进行编译。可以直接使用批处理文件或从 make 文件实用工具调用批处理文件来使 .NET Compact Framework 集成到企业生成系统。使用MSBuild 进行编译使用MSBuild 在命令提示符处进行编译在命令提示处,定位到 .NET Compact Framework 应用程序的项目文件所在的目录。项目文件具有 .sln、.vbproj 或 .csproj 扩展名。 键入msbuild.exe,后面跟随项目文件。“命令提示符”窗口将提供有关生成过程的信息。 用于命令提示符编译的批处理文件下表描述了命令提示符编译所需的文件、命令和参数。 要求 说明.NET Compact Framework 程序集默认位于 C:\Program Files\Microsoft.NET\SDK\v2.0\CompactFramework\WindowsCE 文件夹中。您可以在批处理文件或 make 文件中指定该路径,或者使用“我的电脑”属性对话框将其指定为一个环境变量。系统路径变量包括 .NET Framework SDKVisual Basic 编译器 (vbc.exe) 和 Visual C# 编译器 (csc.exe) 位于 %systemroot%\Microsoft.NET\Framework\<version 2.0> 文件夹中。系统路径变量必须包括此路径。-r根据需要引用程序集。您可以通过设置环境变量来指定程序集,如 REF。默认情况下会引用大多数 .NET Compact Framework 程序集。请注意,C# 需要显式引用 Mscorlib.dll,Visual Basic 使用 -sdkpath 开关来定位此文件。-importsVisual Basic 需为以下命名空间进行显式导入:Microsoft.VisualBasicSystem.System.DataSystem.DrawingSystem.Windows.Forms-nostdlb指示Visual C# 编译器忽略 .NET Framework 全功能版(桌面)的程序集。-netcf指示Visual Basic 编译器忽略 .NET Framework 全功能版(桌面)的程序集。-noconfig必选。-sdkpath需要Visual Basic 来定位 Mscorlib.dll。批处理文件需要以下信息:.NET Compact Framework 程序集位置的路径变量。这些示例使用 NETCF_PATH。根据需要使用 -r 开关引用程序集(串联成一个变量)。带有所需开关和参数的编译器命令。这些参数包括变量引用、用于合并其他参数的星号 (*) 和输入到命令提示以运行批处理文件的源文件的名称。创建编译用的批处理文件在文本编辑器中创建一个新文件,然后针对您的首选编程语言添加示例批处理文件的内容,如下面的示例所示。如有必要,调整 NETCF_PATH 变量。保存并命名该文件,例如,可以将 Visual Basic 批处理文件命名为 vbcc.bat,将 C# 批处理文件命名为 cscc.bat。使用批处理文件编译应用程序在命令提示符下输入该批处理文件的名称,然后输入源文件,如下面的示例所示:vbcc myapp.vb可复制到设备或仿真程序的可执行文件将在当前目录中生成。用于C# 编译的批处理文件下面是一个用于 C# 编译的示例批处理文件。 @echo off if "%NETCF_PATH%" == "" ( set NETCF_PATH=c:\Program Files\Microsoft.NET\SDK\v2.0\CompactFramework\WindowsCE) if not "%REF%" == "" goto compile set REF=%REF% "/r:%NETCF_PATH%\MsCorlib.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Data.dll" set REF=%REF% "/r:%NETCF_PATH%\System.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Drawing.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Messaging.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Net.IrDA.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Web.Services.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Windows.Forms.DataGrid.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Windows.Forms.dll" set REF=%REF% "/r:%NETCF_PATH%\Microsoft.WindowsCE.Forms.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Xml.dll" :compile csc -nostdlib -noconfig %REF% %* 用于Visual Basic 编译的批处理文件下面是一个用于 Visual Basic 编译的示例批处理文件。 @echo off if "%NETCF_PATH%" == "" ( set NETCF_PATH=c:\Program Files\Microsoft.NET\SDK\v2.0\CompactFramework\WindowsCE) if not "%REF%" == "" goto compile set REF=%REF% "/r:%NETCF_PATH%\System.Data.dll" set REF=%REF% "/r:%NETCF_PATH%\System.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Drawing.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Messaging.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Net.IrDA.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Web.Services.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Windows.Forms.DataGrid.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Windows.Forms.dll" set REF=%REF% "/r:%NETCF_PATH%\Microsoft.WindowsCE.Forms.dll" set REF=%REF% "/r:%NETCF_PATH%\System.Xml.dll" set REF=%REF% "/r:%NETCF_PATH%\Microsoft.VisualBasic.dll" set IMP= /Imports:Microsoft.VisualBasic,System,System.Data set IMP=%IMP% ,System.Drawing,System.Windows.Forms :compile vbc -sdkpath:%NETCF_PATH% -noconfig -netcf %IMP% %REF% %* 请参见其他资源生成应用程序和核心任务
Ⅶ 使用MSBuild编译与使用VS编译有什么不同吗
vs就是调用msbuild编译的。前提是你独立用msbuild,你参数得用对,你可以和vs输出窗口(需要打开详细输出)的msbuild的命令行对照。举个例子:
1.在MS.Build.下Task为我们实现了基本的ITask信息。我们可以从这里继承开始
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespaceFirstBuildTask
{
publicclassMyBuildTask:Microsoft.Build.Utilities.Task
{
privatestringoutputFile;
[Microsoft.Build.Framework.Required]
publicstringOutputFile
{
get{returnoutputFile;}
set{outputFile=value;}
}
publicoverrideboolExecute()
{
Log.LogWarning("testmessage:"+this.outputFile);
returntrue;
}
}
}
2.用VS重新加载编译或者是MSBuild控制台编译:UsingTask:定义:<UsingTask TaskName="TaskName" AssemblyName = "AssemblyName" TaskFactory = "ClassName" Condition="'String A'=='String B'" />
Ⅷ 怎么在批处理中判断msbuild 和 vcbuild 是否编译失败
C++解决方案和项目都使用MSBuild进行构建,从而取代了原来的构建工具VCBUILD.exe。对于其他的Visual Studio语言和项目类型,MSBuild提供了一样的灵活性,可扩展性和基于XML的构建支持工具。
Ⅸ 怎样使用 MSBuild 自动编译和发布 NET 网站
很多.NET 程序员开发的时候,每次都需要涉及到各个环境的部署问题,但是手工操作的话又容易出错,而且非常麻烦,我们今来讲解怎样实现自动编译和发布 .NET 网站。废话不多讲,先讲讲我的初步实现方案。
MSBuild 自动编译和发布 NET 网站步骤:
准备工具:GIT版本控制(gitlab),Jenkins, msbuild
1、安装git版本控制器,提交代码。(svn好像也可以), 并生成ssh public key上传到gitlab的ssh key中(个人配置/SSH KEY)。
2、安装jenkins开源工具。
3、Jenkins安装git plugin, Msbuild插件(Manager Jenkins/Manage Plugins)
4、配置Jenkins中的git(Manager Jenkins/Configure System)在git栏中输入name和Path: git install path\cmd\git.exe
5、添加对应.NET framework version MSBuild
Name: .NET4.0
Path to MSBuild:
%system%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
6、建立.NET项目文件,并添加MSBuild文件
建立一个解决方案nonsuch.sln,里面包含一个website: nonesuch.web.
在解决方案根目录建立一个xml文件,改名为: build.targets