4

dll への参照を追加している最中に、Microsoft 名前空間の大多数のインスタンスが大文字の M を持ち、まれに小文字の m を持っていることに気付きました。

ここに画像の説明を入力

これには理由や論理がありますか?

マイクロソフトによるこの決定の理由を知っている人はいますか?

4

1 に答える 1

5

ご指摘のエントリは、通常の .NET フレームワーク アセンブリではありません。また、それらはツールによって自動生成されます。.NET フレームワークの命名規則に従わない 2 つの正当な理由があります。それらはPIA、プライマリ相互運用アセンブリです。これらには、COM コンポーネントのタイプ ライブラリから取得された宣言が含まれており、.NET メタデータに変換されて、CLR が COM コンポーネントと簡単に相互運用できるようになっています。これらの PIA の型には [ComImport] 属性があります。

Tlbimp.exe は、これらのアセンブリを自動生成するために使用されるツールであり、/primaryコマンド ライン オプションは PIA を生成します。Microsoft から取得したものは、Tlbimp.exe を自分で実行したときに取得するものとは少し異なります。1 つには、Microsoft はアセンブリにバージョン リソースを含めます。また、これらの PIA の名前は、Tlbimp.exe が生成する既定の名前ではありません。つまり、Microsoft のビルド エンジニアが/outコマンド ライン オプションに入力した内容を確認できます。明らかに、彼はケーシングにあまり注意を払っていません。

Microsoft.msxml は、c:\windows\system32\msxml3.dll の PIA であり、古いコードで XML ドキュメントを読み書きするために非常によく使用されます。Microsoft.mshtml は、c:\windows\system32\mshtml.tlb の PIA です。これは、Internet Explorer でサポートされている DOM インターフェイスのタイプ ライブラリであり、Web ページの HTML 要素を掘り下げるときに必要になります。Oleview.exe ツールの File + View Typelib を使用すると、これらのタイプ ライブラリを「ネイティブ」形式で表示できます。それ以外の点では、これらのタイプ ライブラリを生成するために最初に使用された言語である IDL (Interface Description Language) で表現されていることを除いて、Object Browser で表示されるものと非常によく似ています。

PIA はほとんどが歴史的なアーティファクトであり、.NET 4 で不要になったため、Embed Interop Type 機能を利用できます。

于 2013-05-15T14:08:11.983 に答える