在Windows上编译和调试CoreCLR
生成CoreCLR - Windows篇
本文的唯一目的就是让你运行Hello World
运行环境
Window 7+
Visual studio 2015
确保C++ 工具已经被安装,默认是不安装的,所以要选择自定义模式,VS 2015 精简版不支持。
CMake
下载 CMake for windows,并把Cmake的目录添加到为PATH的系统变量里。
Python
下载Python for windows 并安装,并把Python的目录地址添加到Path系统变量中。
Powershell
powershell版本必须大于等于3.0,因为我用的是WIN10,默认为4.0,所以不用特别升级。
Git
新建一个目录,名字为git,当然名字随便取,放在一个你觉得适合的地方。然后在bash中执行如下命令克隆Repo.
C:\git>git clone https://github.com/dotnet/coreclr
C:\git>git clone https://github.com/dotnet/corefx
Demo 目录
新建一个目录,然后新建2个文件夹,一个取名叫runtime,一个取名叫packages.
Nuget
下载Nuget客户端 并放在一个你觉得合适的地方。
Build
进入刚刚克隆好的目录,然后执行build clean命令,系统会先安装coreclr cli,这是个很长的过程,估计整个流程全跑完要30~40分钟,所以耐心等吧。
对于CoreFx,那么就只要执行Build 就够了。
复制DLL
一张图足矣,CoreClr需要复制上面的文件,而CoreFx,只需要复制需要的,对于你这个CS文件来说需要的。文件从bin/product目录底下找。
生成EXE
使用VS2015的命令行工具,执行如下命令,当然路径什么的自己改。
csc /nostdlib /noconfig /r:runtime\mscorlib.dll /out:runtime\helloworld.exe helloworld.cs
Debug
大公告完了?没呢,没DEBUG算什么完成。
- 找到CoreCLR.sln这个项目(当然前提是编译过了,不然直接从GIT上下载的没这个东西),我电脑里面的目录是:D:\coreclr2\coreclr\bin\obj\Windows_NT.x64.Debug。
- 找到Install并设为启动项目
- 右键Install项目->属性->调试,设置命令为:$(SolutionDir)..\..\product\Windows_NT.$(Platform).$(Configuration)\corerun.exe,命令参数:HelloWorld.exe,工作目录为:$(SolutionDir)..\..\product\Windows_NT.$(Platform).$(Configuration),
- 按下F11,忽略一切阻碍!
问题汇总
解决方法 ,不过这种方法并不是最好的,因为会拖慢速度,因为是从远程下载PDB。
但是遗憾的是,我的CoreCLR启动失败了。@dudu,求教为什么会失败?
PS:编辑于2016-5-28 ,使用Windbg进行调试时候Symbol file could not be found的问题解决方法,使用Windbg进行调试的教程请参见本文的评论,如果出现了符号未加载,那么怎么解决呢?首先在VS中的选项->调试里面 找到符号的缓存地,如果还有不清楚的,请参见本文的其他地方;设置好以后,按一下F5运行一下程序,这个时候回自动从微软的符号服务器中下载PDB文件,并缓存到此目录。
然后打开Windbg并运行此EXE文件,在窗口中输入如下命令:
.sympath D:\symbolCache;srv*c:\debugmsft*http://msdl.microsoft.com/download/symbols
然后再.restart重启就OK了。
在Windows上编译和调试CoreCLR的更多相关文章
- 在Mac/Linux/Windows上编译corefx遇到的问题及解决方法
这两天尝试在Mac/Linux/Windows三大平台上编译.NET跨平台三驾马车(coreclr/corefx/dnx)之一的corefx(.NET Core Framework),结果三个平台的编 ...
- [ZZ] 在windows上编译Mesa3d opengl32库
在windows上编译Mesa3d opengl32库 cheungmine http://blog.csdn.net/ubuntu64fan/article/details/8061475 Mesa ...
- 利用openssl管理证书及SSL编程第2部分:在Windows上编译 openssl
利用openssl管理证书及SSL编程第2部分:在Windows上编译 openssl 首先mingw的环境搭建,务必遵循下文: http://blog.csdn.net/ubuntu64fan/ar ...
- 在windows上编译wireshark源代码
终于在windows上成功编译了wireshark源代码,个中酸辛,都是泪..只能说要多试! windows上编译wireshark共用到三个东西:wireshark源代码.python.cygwin ...
- 在windows 上编译部署Rap2
在windows 上编译部署Rap2 引言 安装需要的环境 安装后端站点 创建数据库 在全局安装pm2 和 typescript 配置mysql,redis 数据库链接配置 初始化 编译 初始化数据库 ...
- 剖析并利用Visual Studio Code在Mac上编译、调试c#程序
0x00 前言 一周多以前的微软的Build大会上,微软发布了一个让很多人眼前一亮的工具,也是本文的主角——Visual Studio Code.很多使用Windows的朋友都很高兴,认为又多了一个很 ...
- 剖析并利用Visual Studio Code在Mac上编译、调试c#程序【转】
0x00 前言 一周多以前的微软的Build大会上,微软发布了一个让很多人眼前一亮的工具,也是本文的主角——Visual Studio Code.很多使用Windows的朋友都很高兴,认为又多了一个很 ...
- 在windows上编译MatConvNet
有个BT的要求,在windows上使用MatConvNet,并且需要支持GPU. 费了些力气,记录一下过程(暂不支持vl_imreadjpeg函数) 在这里下载MatConvNet,机器配置vs201 ...
- 如何在 Windows上编译Objective-C
Objective-C现在几乎已经变成了苹果的专利了,可以直接在苹果的Xcode上编译Objective-C程序,但是在Windows平台下的编译工具就寥寥无几了,本身这种语言用的人就不是很多.今天在 ...
随机推荐
- 微信小程序开发心得
微信小程序也已出来有一段时间了,最近写了几款微信小程序项目,今天来说说感受. 首先开发一款微信小程序,最主要的就是针对于公司来运营的,因为,在申请appid(微信小程序ID号)时候,需要填写相关的公司 ...
- Socket聊天程序——客户端
写在前面: 上周末抽点时间把自己写的一个简单Socket聊天程序的初始设计和服务端细化设计记录了一下,周二终于等来毕业前考的软考证书,然后接下来就是在加班的日子度过了,今天正好周五,打算把客户端的详细 ...
- JavaScript Array对象
介绍Js的Array 数组对象. 目录 1. 介绍:介绍 Array 数组对象的说明.定义方式以及属性. 2. 实例方法:介绍 Array 对象的实例方法:concat.every.filter.fo ...
- CENTOS 6.5 平台离线编译安装 PHP5.6.6
一.下载php源码包 http://cn2.php.net/get/php-5.6.6.tar.gz/from/this/mirror 二.编译 编译之前可能会缺少一些必要的依赖包,加载一个本地yum ...
- 旺财速啃H5框架之Bootstrap(三)
好多天没有写了,继续走起 在上一篇<<旺财速啃H5框架之Bootstrap(二)>>中已经把CSS引入到页面中,接下来开始写页面. 首先有些问题要先处理了,问什么你要学boot ...
- 千呼万唤始出来,微软Power BI简体中文版官网终于上线了,中文文档也全了。。
前几个月时间,研究微软Power BI技术,由于没有任何文档和资料,只能在英文官网瞎折腾,同时也发布了英文文档的相关文章:系列文章,刚好上周把文章发布完,结果简体中文版上线了.哈哈,心里有苦啊,早知道 ...
- javascript之Object.defineProperty的奥妙
直切主题 今天遇到一个这样的功能: 写一个函数,该函数传递两个参数,第一个参数为返回对象的总数据量,第二个参数为初始化对象的数据.如: var o = obj (4, {name: 'xu', age ...
- Javascript实用方法二
承接上一篇, Object keys object的keys方法能够获取一个给定对象的所有键(key/属性名)并以数组的形式返回.这个方法可以用于键的筛选.匹配等. var basket = { st ...
- react入门参考资料--step by step
ReactJS简介 React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站.做出 ...
- JS继承之原型继承
许多OO语言都支持两种继承方式:接口继承和实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法.如前所述,由于函数没有签名,在ECMAScript中无法实现接口继承.ECMAScript只支 ...