C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

別Namespaceの参照について

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■94450 / inTopicNo.1)  別Namespaceの参照について
  
□投稿者/ marusa (1回)-(2020/04/13(Mon) 15:45:07)

分類:[C#] 

2020/04/13(Mon) 15:59:56 編集(投稿者)
2020/04/13(Mon) 15:55:07 編集(投稿者)

初めての質問を失礼いたします。
現在、VisualStudioExpressにて.NET4.6.1フレームワークを利用してC#のプログラムを共同で作成しています。

自身で定義したよく利用する関数群を一つにまとめるために、あるNamespace上(Bとします)のクラスとして定義し
それとは異なるNamespace(Aとします)から参照できるようにしたいのですが、方法がわかりません...

A上のクラスSampleでusing B.Sampleとした場合は当然ですが見つかりませんでした。
調べたところ、ソリューションファイルに参照を追加することで異なるNamespaceの参照が可能になるとのことで
実際に試したところこれで動作自体は可能でした。
しかし、コードを共有することも多いので実行側の環境に依存する設定はあまり行いたくないということもあり、
どうにかこれ以外の方法で実現したいと考えています。
ディレクトリ構成は以下のようにしております。

Project
..├ A
..│.├ A-1
..│.│...└A-1.cs
..│.└ A.sln
..└ B
.....└ Sample.cs

Projectディレクトリをソリューションディレクトリとして、その配下にソリューションフォルダfolder_Aを追加、
folder_A配下にA,Bを定義した以下のようなディレクトリ構成にしても同じように発見することができませんでした。

Project
..├ folder_A
..│.├ A
..│.│..└A-1
..│.│....└ A-1.cs
..│.└ B
..│.....└ Sample.cs
..└ Project.sln

C#上で、ソースコード(もしくは実行ファイル)よりも上の階層に存在する別のNamespaceを参照することは可能なのでしょうか?
ご教授いただければ幸いです。
引用返信 編集キー/
■94454 / inTopicNo.2)  Re[1]: 別Namespaceの参照について
□投稿者/ Hongliang (993回)-(2020/04/13(Mon) 16:20:37)
まず、フォルダ構造は一切関係ありません。
(Visual Studioで新しいcsファイルを作成した時の既定のnamespaceに影響するぐらいです)

Visual Studioは、ソースファイル類を以下のようなグループで管理します。
・最上位に「ソリューション」。1つのVisual Studioプロセスで1つだけ扱える。
・ソリューションの下に、「プロジェクト」。ビルドした時に1つのdllやexe(アセンブリと総称する)にコンパイルされる単位。
・プロジェクトの下に、各種ソースファイル等。

名前空間というのはあくまで正式なクラス名の一部を構成するものなので、2つのアセンブリ間で同じ名前空間を持てますし、一つのアセンブリ内で複数の名前空間を持てます。

「自身で定義したよく利用する関数群を一つにまとめるため」であれば、名前空間とは関係なく、DLLとしてまとめるのが一般的です(まあ一般的には名前空間も異なるものになるでしょうけど)。
つまり、別プロジェクトとして作成します。
「新規プロジェクトを追加」でDLL用のプロジェクトをソリューションに追加します。
DLLを使う側は「参照の追加」の「プロジェクト」から参照を追加します。

他のソリューションのプロジェクトでDLLを使う場合、「既存のプロジェクトを追加」でDLLのプロジェクトをソリューションに追加します。

ところで
「ソリューションファイルに参照を追加することで異なるNamespaceの参照が可能」
「実行側の環境に依存する設定はあまり行いたくない」
というのが正直よく分からないのですが、もし先に述べた解決策で不満点があるなどであれば、この2点について1つ目はどういう操作を指しているのか、2つ目は環境に依存する設定というのが何を指しているのか、を教えていただけるとやり取りもスムーズになるかと思います。
引用返信 編集キー/
■94457 / inTopicNo.3)  Re[2]: 別Namespaceの参照について
□投稿者/ marusa (2回)-(2020/04/13(Mon) 16:40:32)
No94454 (Hongliang さん) に返信
返信ありがとうございます。
> つまり、別プロジェクトとして作成します。
> 「新規プロジェクトを追加」でDLL用のプロジェクトをソリューションに追加します。
> DLLを使う側は「参照の追加」の「プロジェクト」から参照を追加します。
> 他のソリューションのプロジェクトでDLLを使う場合、「既存のプロジェクトを追加」でDLLのプロジェクトをソリューションに追加します。

> 「ソリューションファイルに参照を追加することで異なるNamespaceの参照が可能」
説明が不足していて申し訳ありません。
作成したプロジェクト自体はdllではなくConsoleアプリでしたが、同様の操作により実現できたというのが本文の
> 調べたところ、ソリューションファイルに参照を追加することで異なるNamespaceの参照が可能になるとのことで
この部分です。Visual Studioのソリューションエクスプローラー上で、プロジェクトに参照を追加するという操作のこと
で、ご指摘頂いた操作と同様の操作かと思います。

> 「実行側の環境に依存する設定はあまり行いたくない」
> というのが正直よく分からないのですが、もし先に述べた解決策で不満点があるなどであれば、この2点について1つ目はどういう操作を指しているのか、2つ目は環境に依存する設定というのが何を指しているのか、を教えていただけるとやり取りもスムーズになるかと思います。
前提として説明不足で申し訳なかったのですが、Visual Studioによって生成されるファイルのうち
.csファイルのみを共有することを考えていました。そのため、プロジェクトに対する操作を行わず(共有相手にはプロジェクト設定を共有しないため)
プログラム内で完結できないかな、と考えていました。

そもそもこのようなファイル管理自体があまりよくないのでしょうか?
引用返信 編集キー/
■94459 / inTopicNo.4)  Re[3]: 別Namespaceの参照について
□投稿者/ Hongliang (994回)-(2020/04/13(Mon) 17:45:58)
> 前提として説明不足で申し訳なかったのですが、Visual Studioによって生成されるファイルのうち
> .csファイルのみを共有することを考えていました。そのため、プロジェクトに対する操作を行わず(共有相手にはプロジェクト設定を共有しないため)
> プログラム内で完結できないかな、と考えていました。
>
> そもそもこのようなファイル管理自体があまりよくないのでしょうか?

どうでしょうね?
ファイル1つなら特に問題はないと思います。
しかしいずれファイルが増えてくると、a.csを使うにはb.csとc.csも含めなければならず、c.csは…なんてことになる可能性があります。
プロジェクトとして一括管理できた方が個人的には楽に思いますね。
引用返信 編集キー/
■94461 / inTopicNo.5)  Re[4]: 別Namespaceの参照について
□投稿者/ marusa (3回)-(2020/04/13(Mon) 18:02:05)
No94459 (Hongliang さん) に返信
> どうでしょうね?
> ファイル1つなら特に問題はないと思います。
> しかしいずれファイルが増えてくると、a.csを使うにはb.csとc.csも含めなければならず、c.csは…なんてことになる可能性があります。
> プロジェクトとして一括管理できた方が個人的には楽に思いますね。
プロジェクトとして管理するのが本当に現実的ですね(現在複数プロジェクトに同じファイルをコピーして思いました)。
共有の仕方を見直したいと思います。ご回答頂きありがとうございました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ