原因は、
最近在研究ServiceScope的内一些内在运行逻辑,发现相关资料非常少,只有讲IOC相关的文章有说Core时代的官方依赖注入怎么使用。。遂决定还是要去看源代码。这部分源代码在Microsoft.Extensions.DependencyInjection库中,源代码位置在src/libraries下。阅读了一点,发现内部解析服务的时候会来回倒腾,那看代码的方式去梳理就非常难受了。。
C#がJAVAのようにスムーズにソースコードをデバッグできる可能性はありますか?
効果は
本当にあります!あまり言わないでください。


ネイティブコードをデバッグするように、非常に高速です。.逆コンパイルより出る滑らかさは知らず高くそこまで行った!
不知道官方的项目用了什么黑魔法,这里能直接拉到源代码(图里的外部源),而自己开发的项目做不到这一点。
具体的な手順
実際には公式の説明がありますが、いくつかの重要なポイントを逃して、私は非常に長い間カードにつながった、以下の詳細な説明になります。
PS 1:主にWindows VS、他のプラットフォームも同様です。
PS2私は主にDIの構築ロジックを見ていますが、このバージョンではあまり違いがないので、直接6.0を取得しました
1.公式倉庫の開設
それからあなたが見たい分岐コードをローカルに引っ張ってきて、私は主に見ます

2.ビルドノートを見つける。

3.対応するプラットフォームの基盤環境をインストールする

Windows VSプラットフォームは以下のようにインストールされます。


然后点击查看详细信息,弹出的提示(无法安装XXXXX)可以忽略, 然后点修改即可。
このステップでは、公式の説明では、SDKの新しいバージョンをインストールするだけで、一致する必要はありません。通常、開発するコンピュータには. NET Frameworkと. NET SDKがインストールされています。. NET Framework 4.0 Target Pack +4.7.2、Target Pack +NET 6.0 SDKをインストールしています。
〔4〕。対応ライブラリの復元
资源浏览器定位到runtime的根目录,记住这个build.cmd

コマンドラインまたはpwdを右クリックして、次のように実行します:

脚本会下载一个ps1文件然后自动执行,我们等待即可,他会自动还原我们需要的库,并且把依赖的基础包也一并还原好。
公式のコード構造ではnugetの構成と出力ディレクトリができていますが、追加の構成は必要ありません。次はコンパイルです。
5.対応するライブラリのdllファイルを生成する
対応するライブラリのコードファイルを開く

コマンドラインまたはpwdを右クリックして、次のように実行します:

コンパイルが終わるのを待ち、このディレクトリで何かを探す。

每个库都会生成到artifacts下面,然后不同架构对应一个文件夹, 此时你就可以在你的测试项目中直接引用这个dll了, 愉快的调试吧。
[オプション]6.依存ライブラリファイルの生成
我这里是想调试Microsoft.Extensions.DependencyInjection,在 NuGet 上就能看到他还依赖一个抽象定义包Microsoft.Extensions.DependencyInjection.Abstractions,为了不在调试中卡壳,我把这个包一并如法炮制。
その他の
- 情報を調べてみると、VSで直接コンパイルすることもできますが、何かを設定する必要があり、この方法を理解していないので、すべてをコンパイルする必要はありません。
VS Code也可以,但我主要用 VS 就略过这部分了build.cmd脚本不加参数似乎是编译所有包, 我不需要就跳过这个了