6

警告を修正しようとしています

警告 CS0436: '...\SharedProject1\SharedProject1\Class1.cs' の型 'Class1' は、'ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' のインポートされた型 'Class1' と競合しています。「...\SharedProject1\SharedProject1\Class1.cs」で定義されたタイプを使用します。WpfApplication1 ...\SharedProject1\WpfApplication1\MainWindow.xaml.cs

再現:

  • 3 つのプロジェクトでソリューションを作成します。

SharedProject1 (新しいクラスを追加)

namespace SharedProject1
{
    public class Class1() { }
}

ClassLibrary1

namespace ClassLibrary1
{
    public class Class1 { }
}

WpfApplication1 (これをMainWindowコンストラクターに追加)

public MainWindow()
{
    InitializeComponent();
    var a = new SharedProject1.Class1();
    var b = new ClassLibrary1.Class1();
}
  • SharedProject1と の両方ClassLibrary1での参照WpfApplication1

  • ビルドすると、警告が表示されます。

質問: 警告を修正するには?

4

3 に答える 3

4

依存関係スキーマを次から変更します。

Shared -> Class
Shared -> Application

に:

Shared -> Class -> Application

つまりApplication、 への直接参照から削除しSharedます。

最初のスキーマは、2 つの dll に組み込まれた同じクラスになります。それが紛争の原因です。Class2 番目のスキーマでは、共有ライブラリがdll に組み込まれているため、 にもアクセスできApplicationます。

ClassApplicationが互いに独立している場合、最初のスキーマは問題ありません。

これはすべて、共有プロジェクトがライブラリを生成しないためです。そのため、ライブラリのどこかに表示することを検討する必要があります。通常は 1 か所のみです。これは通常、各共有ライブラリを 1 回だけ参照する必要があることを意味します。

于 2017-01-14T20:47:12.933 に答える
0

コードを次のように変更してみてください。

       namespace SharedProject1{public class Class1() { }}

あなたのプロジェクト WpfApplication1 では、 SharedProject1 と ClassLibrary1 への参照を追加する必要があります。

私はあなたの仕様であなたのためにプロジェクトを作成しました:

プロジェクト例

于 2016-04-14T09:19:11.843 に答える