1

デフォルトの名前空間が である ac# プロジェクトがありますProject.App- デフォルトの名前空間が である別のプロジェクトがありますProject.Service

から作成された DLL をProject.Service参照として含めていますProject.App- プロジェクトが 2 つの異なるソリューションにあり、2 つの異なるグループによって管理されているためです。

コードで参照を使用してコンパイルしようとすると、常に次のエラーが表示されます"The type or namespace 'Service' does not exist in the namespace 'Project'".

ここで何が欠けていますか?

編集:私の問題の解決策を見つけました:名前空間が認識されません(存在しても)

4

6 に答える 6

1

方法: 名前空間エイリアス修飾子を使用する (C# プログラミング ガイド)

//example
using colAlias = System.Collections;
于 2013-01-03T18:47:36.103 に答える
0

Project.Servicedllにエイリアスを付けてから、エイリアスをコードにインポートしてみてください。このような:

  1. プロジェクトのReferencesフォルダーで参照されているdllを右クリックし、[プロパティ]をクリックします。
  2. [エイリアス]フィールドに、この参照の新しいエイリアス(「サービス」など)を入力します
  3. コードページで、ページの上部に次のディレクティブを追加します。extern alias Services;
  4. 次のようなusingステートメントを追加します。usingService=Services;
  5. Project.Service次のように名前空間を参照します。Service.DoSomthing();

この時点で行ってもいいはずです。

于 2013-01-03T18:59:46.337 に答える
0

使用するクラスが Project.Service 名前空間にあり、パブリックであることを確認しましたか? Project.Service が既定の名前空間であっても、アセンブリ内のすべてのクラスがその名前空間を持つとは限りません。

于 2013-01-03T19:22:44.920 に答える
0

参照が実際に追加されているかどうかを最初に確認します。サービスdll のターゲット フレームワークが、アプリのターゲット フレームワークとは異なる (新しいバージョン) 可能性があります。

于 2013-01-03T18:47:36.283 に答える
0

あなたは正しく参照しているように見えるので...

のすべてのクラスは、他のプロジェクトが何も「見えない」ようにProject.Serviceすることができます。internal

true の場合 - パブリックにするか、アセンブリを他のアセンブリ "InternalsVisibleTo" のフレンドにします (両方が強力に署名されている必要があることに注意してください)。

于 2013-01-03T19:04:33.333 に答える
0

しばらく前に (stylecop が using ステートメントを移動するように指示した後)、現在の名前空間内で using ステートメントを移動すると、このような名前空間の衝突に役立つという記事を読みました。

namespace example
{ 
   using xxxxx
}

次の投稿を参照してください: 「using」ステートメントは名前空間の内側または外側にある必要がありますか?

于 2013-01-03T18:55:32.493 に答える