[解決済み] Microsoftはどのようにして循環参照を持つアセンブリを作成したのですか?
2022-11-14 18:32:44
質問
.NET BCLでは、以下のような循環参照があります。
-
System.dll
そしてSystem.Xml.dll
-
System.dll
そしてSystem.Configuration.dll
-
System.Xml.dll
そしてSystem.Configuration.dll
以下は、私が言いたいことを示す.NET Reflectorのスクリーンショットです。
Microsoft がどのようにしてこれらのアセンブリを作成したのか、私には謎です。 これを可能にするために、特別なコンパイル プロセスが必要なのでしょうか。 何か面白いことが起こっているのではないかと想像しています。
どのように解決するのですか?
Mono Projectがどのように行っているかは、私が知る限りではありません。コードはぐちゃぐちゃになりますが、定理はとても簡単です。
彼らは最初に System.Configuration.dll を、System.Xml.dll への参照を必要とする部分なしでコンパイルします。この後、System.Xml.dll を通常の方法でコンパイルします。さて、ここからが本番です。System.Xml.dllへの参照を必要とする部分を含むSystem.configuration.dllを再コンパイルするのです。これで、循環参照によるコンパイルが成功しました。
要するに
- Aは、BとBへの参照を必要とするコードなしでコンパイルされます。 はBとBへの参照を必要とするコードなしでコンパイルされます。
- B はコンパイルされます。
- A をリコンパイルします。
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み】XAMLにSystem.Stringを埋め込む
-
[解決済み】警告。同じ依存アセンブリの異なるバージョン間で競合が見つかりました。
-
[解決済み] Visual Studioの "ターゲットフレームワーク "が見つからない
-
[解決済み] Microsoft Officeをインストールせずに、C#でExcel(.XLSおよび.XLSX)ファイルを作成するにはどうすればよいですか?
-
[解決済み] Typeから新しいオブジェクトのインスタンスを作成する方法
-
[解決済み] 数字しか入力できないテキストボックスの作り方を教えてください。
-
[解決済み] LINQクエリでToList()とToArray()のどちらを呼び出すのが良いですか?
-
[解決済み] .NETで文字列から発音区分符号(アクセント)を削除するにはどうすればよいですか?
-
[解決済み] 現在ロードされているアセンブリをループで処理する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] データテーブルの並べ替え
-
[解決済み] フレームワークとアーキテクチャの違いは何ですか?[クローズド]
-
[解決済み] AndroidでWCFサービスを利用する方法
-
[解決済み] 24:00:00 を超える値を持つ .Net Timespan を格納するための正しい SQL タイプは何ですか?
-
[解決済み] データテーブルがすでに別のデータセットに属している
-
[解決済み] VB.NETでファイル名を一意のサフィックスに変更するには?
-
[解決済み] ファイルまたはアセンブリをロードできませんでした 操作がサポートされていません。(HRESULT: 0x80131515 からの例外)
-
[解決済み] "SSL/TLSセキュアチャネルの信頼関係を当局と確立できませんでした "の解決方法
-
[解決済み] PowerShellで文字列がNULLまたは空であるかどうかを確認するにはどうすればよいですか?
-
[解決済み] .NETで文字列から発音区分符号(アクセント)を削除するにはどうすればよいですか?