プロジェクトとアセンブリ名・名前空間の関係

プロジェクトを作成すると、アセンブリ名とルート名前空間に自動的にプロジェクト名が設定されます。

そのため、アセンブリ名・ルート名前空間=プロジェクト名でなければならないと思われがちですが実はそうではなりません。

アセンブリ名、ルート名前空間は任意に設定可能です。

 

アセンブリ名と名前空間の関係

※アセンブリとは、ExeやDllのこと。

アセンブリ名と、その中に内包する名前空間に直接の関係性はありません。

また、アセンブリ名=ルート名前空間である必然性もありません。

そもそも、ある名前空間に対応するアセンブリが一意に決まるとは限りません。

例えば、mscorlibというアセンブリはSystem名前空間を含んでいますが、これとは別にSystemというアセンブリもSystem名前空間が含まれています。

つまり、アセンブリと名前空間の関係は多:多になっていて、あるクラスがどの名前空間に属しているか、どのアセンブリの参照を必要とするかは、ドキュメントをみてみないと分からないのです。