web-dev-qa-db-ja.com

「アセンブリ同じ単純名はすでにインポートされています」エラー

これはCLRプロジェクトです。同じ名前の2つのDLLファイルquizz.dll(古いバージョンの名前をlegacyquizz.dllに変更)をインポートし、新しいバージョンをquizz.dllとしてレガシーコンバーターのテストプロジェクトに含めます(レガシーコンバーターテスト対象のプロジェクトは、古いquizz.dllのみをインポートします。

これは私が得ているエラーです。 。 。

同じ単純な名前のアセンブリ 'Quizz、Version = 2.0.0.1、Culture = neutral、PublicKeyToken = nullはすでにインポートされています。

参照の1つを削除するか、それらに署名して、並べて有効にしてみてください。 c:\。 。 。\Quizz.dll

それが指しているパスは、新しいバージョンのquizz.dllの宛先です。

私はlegacyquizz.dllファイルで外部エイリアスを使用しています:

extern alias legacy;

この文脈での「単純な名前」とは何ですか?

13
rbtLong

プロジェクトのプロパティを開き、[アセンブリ情報]を選択すると、単純な名前が表示されます。

enter image description here

アセンブリに署名するには、[署名]タブを選択し、署名キーを作成または選択する必要があります。

enter image description here

6
Gregor Primar

同じ名前のアセンブリが2つあります(ファイル名ではなく、アセンブリ名)。これには2つの解決策があります。

  1. プロジェクトのプロパティからアセンブリの1つに名前を変更し、再コンパイルします。
  2. 同じアセンブリの2つの別々のバージョンが共存できるように、アセンブリで Strong-Name Signing を設定します。
3
Robert Rouhani

新しい.csprojバージョンを使用している場合、別のソリューションプロジェクトへの参照を追加した後、その参照が既にアセンブリ依存関係として存在していると、この問題が発生する可能性があります(この参照はVisual Studioによって自動的に追加された可能性があります)。

ソリューションエクスプローラーで、競合するプロジェクトを展開し、依存関係->アセンブリに移動して、競合を引き起こしているアセンブリへの既存の参照がないことを確認します。存在する場合は、削除するだけで競合が解決されます。

0
BlueStrat