3

私のソリューションには 2 つのプロジェクトがあり、それぞれに public クラスを含む CS ファイルがあります。両方のクラスが同じ名前空間にあるため、お互いに認識できると思っていました。そうではありません。以下のセットアップを参照してください。

プロジェクト Woof1、ファイル File.CS

namespace MyNameSpace
{
  public class Foo
  {
    // Doesn't compile
    Faa f;
  }
}

プロジェクト Woof2、ファイル File.CS

namespace MyNameSpace
{
  public class Faa
  {
    // Doesn't compile
    Foo f;
  }
}

注意: 両方のクラスは同じ名前のファイルに保存されますが、ディレクトリは異なります (つまり、同じファイルではありません)。

  1. なぜコンパイルできないのですか?
  2. それについて何ができますか(クラスを同じプロジェクトに移動することを除く)。

(私はこの件に関するこの議論を見つけましたが、最終的には私の問題ではありませんでした。)

4

5 に答える 5

6
  1. 参照が想定どおりに設定されていることを確認してください。各プロジェクトは、他のプロジェクトを参照する必要があります。
  2. プロジェクト内のすべてのクラスに必ずpublic修飾子を設定してください。
  3. プロジェクト内のすべての列挙に必ずpublic修飾子を設定してください。

また、できれば、enumおよびその他の補助的な定義を共通のプロジェクトに移動して、そこに保存することもできます。

于 2012-10-25T13:36:45.003 に答える
4

プロジェクト Woof2 からプロジェクト Woof1 への参照を追加する必要があります。

また、両方を相互に参照しようとすることは、循環依存関係を導入してビルドを悪夢にするため、良い考えではありません。これを行う必要がある場合は、共通コードを別の (3 番目の) プロジェクトに分割することを検討する必要があります。

于 2012-10-25T12:47:12.793 に答える
2

Woof1には、Woof2への参照を含める必要があります。もう1つの注意点は、名前空間では大文字と小文字が区別されるため、両方の名前空間をMyNameSpaceにする必要があることです。

于 2012-10-25T12:49:07.427 に答える
0

プロジェクトWoof2からWoof1へのプロジェクト参照を追加する必要があります。詳細については、このリンクを参照してください。

于 2012-10-25T12:50:29.537 に答える
0

dllが適切なビルドではない場合に発生する可能性があります。私の場合、ツールバーでリリースオプションを使用していました。デバッグオプションが選択されていることを確認してください

于 2013-12-31T06:55:04.923 に答える