编译ASP.NET Core源码
简介
第一步:设置代理环境变量
ASP.NET Core
项目的编译脚本需要在线下载很多东西, 鉴于国内的网络环境,如果你没有一个快速的代理, 基本上编译脚本是没希望执行成功的。
因此,如果想要快速顺利的编译项目,必须要设置代理。
方式1: 从控制面板里面配置环境变量(一直有效)
跟平常修改windows path环境变量一样的方法, 在控制面板里面,新建 HTTP_PROXY
、HTTPS_PROXY
这两个环境变量。
方式2: 从Powershell命令行手动设置(临时有效)
Powershell中使用下列命令设置环境变量:
1 | $env:HTTP_PROXY="http://127.0.0.1:1080" |
检查环境变量是否生效
上面两种方式,选其一设置即可。
打开Powershell
,输入 $env:HTTPS_PROXY
,$env:HTTPS_PROXY
两条命令,检查输出,看环境变量是否生效。
1 | PS D:\> $env:HTTPS_PROXY |
第二步:下载源码
1 | cd D: |
第三步:安装需要的Visual Studio
组件
为了编译项目需要安装很多Visual Studio组件,项目开发人员很贴心,仓库里面已经提供了VS2022安装配置文件.vsconfig
,导入配置文件进行安装就好了。
即使你已经安装了 Visual Studio 2022
,也要使用 .vsconfig
配置文件重新导入一下,不然在后面的步骤,可能会因为缺失组件而报错。
导入方法: 打开Visual Studio Installer
, 更多 -> 载入配置 -> 选择 D:\aspnetcore\.vsconfig
-> 查看详细信息。
- 关于
Visual Studio
导入或导出安装配置的说明,MSDN文档链接如下: - https://learn.microsoft.com/zh-cn/visualstudio/install/import-export-installation-configurations
第四步:正式编译步骤
按照仓库里面提供的文档,你只需要在Powershell里面执行.\restore.cmd
即可,这也是提供编译脚本的目的。
但是, 你人在国内,由于网络问题,导致无法正常下载编译需要用到的文件,所以如果没有代理,你不可能顺利执行脚本成功的。
为了能够顺利执行脚本成功,你还需要进行如下额外的步骤。
1. 修改编译脚本使用代理加速下载
1.1 修改eng\common\tools.ps1
文件
搜索文件内所有的 Invoke-WebRequest
,脚本使用此命令下载文件,添加-Proxy
选项,可以让该命令走代理。
因此我们把Invoke-WebRequest
改成 Invoke-WebRequest -Proxy "http://127.0.0.1:1080"
。
搜索Attempting to install
,找到 $installScript @variation
, 这一行的意思是使用微软官方的dotnet-install-script
来安装 .net sdk,该脚本提供了-ProxyAddress
选项,用于指定代理。
因此我们把$installScript @variation
改成$installScript -ProxyAddress "http://127.0.0.1:1080" @variation
。
1.2 命令参考文档:
- https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/invoke-webrequest
- https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-install-script
2. 使用nvm管理Node.js的版本
ASP.NET Core项目源码依赖特定版本的Node.js
,通常不会是最新版本的Node.js
。
如果你现有安装的Node.js
版本匹配不上项目依赖,项目编译就会报错,这就需要Node.js
多版本并存安装,这里推荐使用nvm
来管理多版本的Node.js
。
1 | # 安装并使用 Node.js 18.20.2 |
- 当然,你也可以手动下载 Node.js 安装包进行安装, 只要跟项目依赖能匹配上就行。
- 对于 ASP.NET Core v8.0.5 源码,使用 18.x 或 19.x 都是可以的,二选一安装即可。
- 对于 ASP.NET Core 其他版本的源码,根据报错信息,安装相应版本即可。
3. 还原项目
经过上面的操作,我们已经安装好了所有需要的 Visual Studio
组件,设置了代理,安装了项目匹配的 Node.js
版本。
现在可以执行.\restore.cmd
了, 这个时候执行脚本还原项目就不会出错了。
第五步:Visual Studio打开项目
使用 startvs.cmd
调用 Visual Studio 2022 来打开项目, 不要直接双击sln文件。
为什么不能直接双击sln文件?
- 脚本下载安装的编译工具都在
D:\aspnetcore\.dotnet
,D:\aspnetcore\.tools
目录,这些文件夹都在Git仓库目录下面,这些路径非SDK默认路径,是需要进行配置的。 - 你需要使用脚本来加载项目的相关配置,如果不使用
startvs.cmd
,会缺失配置。