如何编译 dotnet/runtime 源代码

前言

最近,准备为 dotnet/runtime 修改 issue,但是在 clone 代码后,发现要编译成功,远没有想象中那么容易。

因此,将整个过程进行记录,以供大家参考。

以下操作都是在 Windows 10 下完成。

0.环境准备

详见官方文档:《在Windows上构建dotnet/runtime的要求》(https://github.com/dotnet/runtime/blob/main/docs/workflow/requirements/windows-requirements.md)

我的机器只是提前装了 Visual Studio 2022。

大家可以自行按需安装。

1.初次尝试

在命令行窗口进入代码所在目录,输入如下命令开始编译代码:

build.cmd

等待少许,就碰到了第一个错误:

1dc1c8719f17d4f649c8142323fc49c0.png

按照错误提示,找到文件python.targets的对应位置:

31e748eaee3646492bb0a9940bc65d67.png

原来是需要安装 python3。

2.再次尝试

安装 python3 后,再次编译。

不久,又显示了另一个错误:

b3a66a79824c5595e49aa45dbc5951b0.png

按照错误提示,找到文件acquire-wix.proj的对应位置:

43cb35a9bc9aaa57a5b3106230b3a142.png

可以看到,这是一个下载文件任务。但是下载地址是个参数,看不到具体的值,这就有点抓瞎了!

0fb7465541f79d7ec3f9b4bbb04ef71a.png

在 dotnet/runtime 的 issue 中找到了一个解决方案:

0536f6d89ccef7a29d08c087de2fed9c.png看发帖的用户名,应该也是个中国人!囧

3.生成日志

运行命令:

build.cmd -bl

再次出错时,可以看到记录了日志:

753d6c168a84a4c08662de1f14fe6276.png

使用“MSBuild Structured Log Viewer”(软件具体使用方法参看《天呐!你知道MSBuild都干了些什么》)打开日志文件,可以看到详细下载地址如下:

cb1a2944728e74a51b55f208633618e4.png

4.编译成功

再就好办了。

下载文件,复制到日志中提示的位置解压,问题解决。

后面又发现几个下载错误,依照同样方式处理。

最后,终于提示编译成功:

94c8261c21f1defd278a654b4bc1daed.png

最后提示的几个是 Nuget 打包的错误,对编译无影响,因此没有处理。

5.再次编译

但是,当我们运行 dotnet/runtime 自带的任意一个测试用例时,却提示找不到指定 dll:

87328f693d094cf49869a80c25e9c170.png

我们发现,对应的dll已经编译了,但是默认编译的是net7.0-Debug版本,而现在查找的是net462-Debug

使用build.cmd -h可以看到,可以指定编译框架版本:

ff689cdb8128b1d29704dd649c954746.png

那就再编译一次吧:

build.cmd -bl -f net48

编译完成后,再次运行测试成功:

cd8802eed37ca5387dfaa80c5358271f.png

结论

这次编译碰到的主要问题,是由于访问国外的网速太慢造成的。

如果你在编译 dotnet/runtime 的源代码时碰到其它问题,欢迎到我的公众号“My IO”留言讨论

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/291282.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站高可用方案

前端:vanish squid等代理缓存动态数据缓存:对于不是经常变化的用memcached 如果跟微博差不多的场景可以用redis数据库:为了备份和恢复:可以用主从 对于主-》从-》从 有个参数log_slave_update参数决定后面两个从是否写日志一主多从…

Android:源码环境编译自定义的APP到ROM(System Image)中

有时候我们需要在源码环境中增加自己的应用或模块,随ROM一起发布。 下面讲述相关步骤: 1. 首先可以在SDK环境下进行编码设计(如果你的APP不涉及到emulator无法模拟的硬件的话) 也可以参考另一篇文章,直接在Eclipse中调试系统级应用源代码&…

jenkins maven testng selenium自动化持续集成

准备环境 首先我们新建一个maven的工程&#xff0c;并且在pom.xml中配置好我们依赖的一些jar包 <dependencies><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>2.46.0<…

LeetCode之Excel Sheet Column Number

1、题目 Related to question Excel Sheet Column Title Given a column title as appear in an Excel sheet, return its corresponding column number. For example: A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 Credits: Special thanks to ts f…

java程序 开发工具_15款Java程序员必备的开发工具

如果你是一名Web开发人员&#xff0c;那么用膝盖想也知道你的职业生涯大部分将使用Java而度过。这是一款商业级的编程语言&#xff0c;我们没有办法不接触它。对于Java&#xff0c;有两种截然不同的观点&#xff1a;一种认为Java是最简单功能***大的编程语言之一&#xff0c;另…

C# 实例解释面向对象编程中的开闭原则

在面向对象编程中&#xff0c;SOLID 是五个设计原则的首字母缩写&#xff0c;旨在使软件设计更易于理解、灵活和可维护。这些原则是由美国软件工程师和讲师罗伯特C马丁(Robert Cecil Martin)提出的许多原则的子集&#xff0c;在他2000年的论文《设计原则与设计模式》中首次提出…

SQLite编译问题

从http://www.sqlite.org/主页上获得了SQLite的源文件&#xff0c;还没有时间研究就在编译上发生了不小的问题。 首先是碰到是&#xff0c;编译之后&#xff0c;只产生了sqlite3.dll文件&#xff0c;不产生对应的lib库文件。 查看了下sqlite3.h代码&#xff0c;发现了SQLITE_AP…

回首程序员4年时光

犹记得在2010年9月只身一人来上海找实习机会&#xff0c;因为自己的算法和数据结构基础很牢固&#xff0c;很容易找到了一家100多人的外资公司&#xff0c;这家公司是开发儿童英语学习虚拟社区的。做的产品是基于Flash实现的&#xff0c;产品含有很多课件&#xff0c;益智游戏&…

LeetCode之Number Complement

1、题目 Given a positive integer, output its complement number. The complement strategy is to flip the bits of its binary representation. Note: The given integer is guaranteed to fit within the range of a 32-bit signed integer.You could assume no leading…

mysql的调试与分析_mysql日志管理分析调试实例_MySQL

以下的文章主要介绍的是MySQL 操作日志查看的实际操作步骤以及对其实际操作步骤的具体描述&#xff0c;假如你在实际操作中遇到相似的情况&#xff0c;但是你却不知道对其如何正确的解决&#xff0c;那么以下的文章对你而言一定是良师益友。刚接触MySQL不久&#xff0c;发现缺少…

.NET 7 预览版 1 发布

宣布 .NET 7 预览版 1Jeremy 2022 年 2 月 17 日今天&#xff0c;我们很高兴地宣布 .NET 历史上的下一个里程碑。在庆祝社区和 20 年创新的同时&#xff0c;.NET 7 Preview 1 标志着迈向 .NET 下一个 20 年的第一步。ASP.NET Core Preview 1 和 EF7 Preview 1 也在今天发布。.N…

SQL Server 触发器

原文:SQL Server 触发器触发器 概述 触发器为特殊类型的存储过程&#xff0c;可在执行语言事件时自动生效。SQL Server 包括三种常规类型的触发器&#xff1a;DML 触发器、DDL 触发器和登录触发器。 当服务器或数据库中发生数据定义语言 (DDL) 事件时将调用 DDL 触发器。登录触…

LeetCode之Detect Capital

1、题目 Given a word, you need to judge whether the usage of capitals in it is right or not. We define the usage of capitals in a word to be right when one of the following cases holds: All letters in this word are capitals, like "USA".All lett…

你一写长文章就焦虑拖延?

这是病&#xff0c;得治。 症状 每年春季学期&#xff0c;总会有一些人很烦躁。 别人晒朋友圈&#xff0c;他留言说不中听的话&#xff1b;你见他突然妄自菲薄&#xff0c;开导劝慰他&#xff0c;却被辩驳甚至骂一通&#xff1b;一点儿小事儿&#xff0c;都能激起他胸中的愤怒&…

mysql通过data目录恢复数据库

mysql通过data目录恢复数据库 阅读&#xff1a;1236次 时间&#xff1a;2010-03-24 06:53:30 字体&#xff1a;[大 中 小]重装系统后&#xff0c;MySQL服务没有了&#xff0c;但是数据库的文件还在&#xff0c;这个时候我想恢复以前的数据库&#xff0c; 起码要把数据导出来…

5.7.21mysql数据库_【数据库】mysql5.7.21 winx64安装配置图文分享

本文主要为大家详细介绍了mysql 5.7.21 winx64安装配置方法图文教程&#xff0c;具有一定的参考价值&#xff0c;感兴趣的小伙伴们可以参考一下&#xff0c;希望能帮助到大家。1、将下载好的mysql压缩包解压到安装目录下2、新建文件my.ini&#xff0c;放置到mysql安装目录下&am…

.NET7的七项重大改进!

.NET 7 Preview1发布了&#xff0c;没时间实操&#xff1f;先快来看看.NET7的七项重大改进&#xff01;1、不再支持.NET 7应用程序、运行时和SDK的多级查找&#xff08;MLL&#xff09;2、PATH停止向.NET 7运行时和SDK添加32位.NET3、默认情况下&#xff0c; dotnet build/publ…

LeetCode之Sum of Two Integers

1、题目 Calculate the sum of two integers a and b, but you are not allowed to use the operator and -. Example: Given a 1 and b 2, return 3. Credits: Special thanks to fujiaozhu for adding this problem and creating all test cases. Subscribe to see wh…

关于新加坡IT薪酬

很多朋友发邮件或留言问我关于新加坡IT薪酬的问题&#xff0c;由于前段时间比较忙&#xff0c;所以没有及时一一回复&#xff0c;在此表示抱歉。 新加坡IT薪酬范围大概如下&#xff08;月薪,新加坡币对人民币为1:5&#xff09;: Junior Developer/Programmer/Engineer/Consulta…

Spring Boot 入门小目标 3 --- 先来试着热部署

2019独角兽企业重金招聘Python工程师标准>>> Spring Boot 入门小目标---先来试着热部署 这次写的主要就是 使用 springloaded 来实现 热部署。 很多时候&#xff0c;我们在修改和添加了新的方法或代码&#xff0c;都需要重启服务器。这样很麻烦&#xff0c;而且 不合…