前言: 相信不要学习asp.net core的人都知道asp.net core是开源的,但是向看源码就要到github上看,或者下载源码之后不会配置没办法跑起来只能挨个文件查找,缺少vs自动跳转查看源码功能,以及测试源码和修改源码 , 为了搞明白asp.net core原理确执行不起来源码会让人沮丧,失去信心. 所以正确的配置显的尤为重要.
下面就介绍如何将官方源码跑起来.
配置asp.net core源码全程需要kexuejishu 上网
官方源码地址:https://github.com/aspnet/aspnetcore
下载源码:
#加 --recursive选项可下载依赖项目
git clone --recursive https://github.com/dotnet/aspnetcore.git
如果github下载很慢或者总是断开,可以使用国内的码云同步的源码库下载,
下载地址:https://gitee.com/mirrors/aspnet-core.git
下载好的源码在跟目录下用git打开, 配置版本
$ git tag
...
v3.0.3
v3.1.0
v3.1.0-preview1.19508.20
v3.1.0-preview2.19528.8
v3.1.0-preview3.19555.2
v3.1.1
v3.1.2
v5.0.0-preview.1.20124.5
截至目前(2020.3.20)最新的稳定版为v3.1.2, 用git切换到tag为3.1.2
git checkout v3.1.2
下面就开始配置项目
win10系统在跟目录下执行build.cmd,其他系统可执行build.sh
执行这个如果不kexuejishu 上网会等很长时间然后失败, 配好kexuejishu 上网之后会看到不停的显示下载的内容,并执行一段时间后就可结束
如果没有vs可以用powershell管理员模式打开eng\scripts\InstallVisualStudio.ps1
,执行之后默认会下载企业版vs,如果只想下载社区版可以添加相关参数,如下
#企业版,不加参数默认也是企业版
InstallVisualStudio.ps1 -edition enterprise
#社区版
InstallVisualStudio.ps1 -edition communiy
下面需要进行restore脚本,它会下载所有编译所需的第三方库或依赖项等。在仓库的根目录,命令行执行:
resore
这个可能需要一点时间,但是如果这步是在build.cmd之后应该会很快。
安装完之后就可以用vs打开src目录下的各个目录里的sln解决方案了, 但是这个时候还需要设置一些修改源码文件
可以转到src/Mvc,此目录下命令行执行startvs.cmd Mvc.sln
也可打开项目
用vs打开项目之后需要在解决方案上右键点击重新生成解决方案,第一次生成结束之后应该都会失败, 此时如果错误条数是一两千个,那说明在执行build.cmd时没有成功,如果错误条数在三十条左右,您离成功已经走了一半路程了.
在错误内容上会发现MessagePack-CSharp下文件未找到, 这是因为此项目引用了外部项目,查看路径为src/submodules, 会发现有两个空文件夹MessagePack-CSharp和googletest,我们回到github上的源码路径https://github.com/dotnet/aspnetcore/tree/master/src/submodules
会发现这两个文件夹比较特殊,分别点击可跳转到对应的github源码目录,这两处的源码就是asp.net core源码引用的外部项目.
把MessagePack-CSharp和googletest源码分别下载到asp.net core的这两个文件夹内,用cmd执行MessagePack-CSharp目录下的init.cmd, 然后回到刚才用vs打开的mvc项目,找到_dependencies目录下的Microsoft.AspNetCore.Components.Server,右键此项目点击编辑项目文件, 然后编辑里面相应内容,将改动如下:
$(DefaultNetCoreTargetFramework)
Runtime server features for ASP.NET Core Components.
true
true
true
true
CS0436;$(NoWarn)
$(DefineConstants);MESSAGEPACK_INTERNAL;COMPONENTS_SERVER;ENABLE_UNSAFE_MSGPACK;SPAN_BUILTIN;
false
$(RepoRoot)src\submodules\MessagePack-CSharp\src\MessagePack.UnityClient\Assets\Scripts\MessagePack\
..\..\Web.JS\dist\$(Configuration)\blazor.server.js
此文件的改动可参照:https://github.com/dotnet/aspnetcore/pull/18713/commits/9142fbf5940c4c8cd8cc66f50fe63569f50747e0
此处文件改动主要配置了MessagePackRoot路径,以及缺失的文件.
将此处文件粘贴替换上去再执行一下解决方案的重新生成解决方案,应该就会通过了, 如果打开其他的解决方案重新生成应该也会成功.
另: asp.net core相关的另一个比较重要的库为:aspnetcore-extensions
下载地址:https://github.com/dotnet/extensions.git
如果kexuejishu 上网执行根目录下的build应该就可以用vs打开项目了,这个项目配置相对简单一些.
至此可以愉快的看asp.net core源码了, 加油吧.