C#内部アクセス修飾子の定義は内部です。含まれているアセンブリまたはフレンドアセンブリ内でのみアクセスできます。だから私の質問はc#アセンブリとは何ですか?含まれているアセンブリまたはフレンドアセンブリ内にあるとはどういう意味ですか?同じ名前空間またはプロジェクト内を意味しますか?
4 に答える
アセンブリは(一般的に)単一.dll
または.exe
ファイルです。
AC#プロジェクト(一般的に)は単一のアセンブリにコンパイルされます。
[assembly: InternalsVisibleTo(...)]
属性を使用してフレンドアセンブリをマークできます。
アセンブリは、情報(の場合)を含むIL
コードであり、またはである可能性があります。このように、情報を使用して、あるアセンブリを別のアセンブリのフレンドとして宣言できるため、データタイプにもアクセスできます。manifest
.NET
DLL
EXE
manifest
internal
属性[assembly: InternalsVisibleTo..]
を使用して、アセンブリで指定された情報のマニフェストにマークを付けます。
アセンブリには、中間コード、リソース、およびそれ自体のメタデータが含まれています。Visual Studioの一部として提供されているildasm(Intermediate Language Disassembler)ツールを使用して、アセンブリの内部を確認できます。アクセスするには、Visual Studioコマンドプロンプトを開き、ildasm.exeと入力する必要があります。これにより、任意の.Netアプリケーションの探索に使用できるWindowsアプリケーションが起動します。
フレンドアセンブリは、別のアセンブリのフレンド(Visual Basic)または内部(C#)タイプおよびメンバーにアクセスできるアセンブリです。アセンブリをフレンドアセンブリとして識別した場合、他のアセンブリからアクセスできるようにするために、タイプとメンバーをパブリックとしてマークする必要がなくなりました。これは、次のシナリオで特に便利です。
単体テスト中に、テストコードが別のアセンブリで実行されているが、フレンド(Visual Basic)または内部(C#)としてマークされているテスト対象のアセンブリ内のメンバーにアクセスする必要がある場合。
クラスライブラリを開発していて、ライブラリへの追加が別々のアセンブリに含まれているが、フレンド(Visual Basic)または内部(C#)としてマークされている既存のアセンブリのメンバーにアクセスする必要がある場合。