简介

第一步:设置代理环境变量

ASP.NET Core项目的编译脚本需要在线下载很多东西, 鉴于国内的网络环境,如果你没有一个快速的代理, 基本上编译脚本是没希望执行成功的。

因此,如果想要快速顺利的编译项目,必须要设置代理。

方式1: 从控制面板里面配置环境变量(一直有效)

跟平常修改windows path环境变量一样的方法, 在控制面板里面,新建 HTTP_PROXYHTTPS_PROXY 这两个环境变量。

方式2: 从Powershell命令行手动设置(临时有效)

Powershell中使用下列命令设置环境变量:

1
2
$env:HTTP_PROXY="http://127.0.0.1:1080"
$env:HTTPS_PROXY="http://127.0.0.1:1080"

检查环境变量是否生效

上面两种方式,选其一设置即可。

打开Powershell,输入 $env:HTTPS_PROXY$env:HTTPS_PROXY 两条命令,检查输出,看环境变量是否生效。

1
2
3
4
5
6
7
PS D:\> $env:HTTPS_PROXY
http://127.0.0.1:1080

PS D:\> $env:HTTP_PROXY
http://127.0.0.1:1080

PS D:\>

第二步:下载源码

1
2
3
4
5
6
7
8
9
cd D:
git clone --recursive https://github.com/dotnet/aspnetcore.git

cd D:\aspnetcore
git submodule update --init --recursive

# 基于特定版本创建新分支,这样就可以把修改保存在新分支上。
git checkout v8.0.5
git branch review-v8.0.5

第三步:安装需要的Visual Studio组件

为了编译项目需要安装很多Visual Studio组件,项目开发人员很贴心,仓库里面已经提供了VS2022安装配置文件.vsconfig,导入配置文件进行安装就好了。

即使你已经安装了 Visual Studio 2022 ,也要使用 .vsconfig 配置文件重新导入一下,不然在后面的步骤,可能会因为缺失组件而报错。

导入方法: 打开Visual Studio Installer, 更多 -> 载入配置 -> 选择 D:\aspnetcore\.vsconfig -> 查看详细信息。

第四步:正式编译步骤

按照仓库里面提供的文档,你只需要在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 命令参考文档:

2. 使用nvm管理Node.js的版本

ASP.NET Core项目源码依赖特定版本的Node.js,通常不会是最新版本的Node.js

如果你现有安装的Node.js版本匹配不上项目依赖,项目编译就会报错,这就需要Node.js多版本并存安装,这里推荐使用nvm来管理多版本的Node.js

1
2
3
4
5
6
7
# 安装并使用 Node.js 18.20.2
nvm install 18.20.2
nvm use 18.20.2

# 安装并使用 Node.js 19.8.1
nvm install 19.8.1
nvm use 19.8.1
  • 当然,你也可以手动下载 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\.dotnetD:\aspnetcore\.tools 目录,这些文件夹都在Git仓库目录下面,这些路径非SDK默认路径,是需要进行配置的。
  • 你需要使用脚本来加载项目的相关配置,如果不使用startvs.cmd,会缺失配置。