web-dev-qa-db-ja.com

項目は、「リソース」パラメーターで複数回指定されました。重複アイテムは、「リソース」パラメーターではサポートされていません

Visual Studio C#プロジェクトのコンパイル中に、次のエラーが表示されます。

The item "obj\Debug\SampleProject.Forms.MDIMain.resources" was specified more than once in the "Resources" parameter. Duplicate items are not supported by the "Resources" parameter.

しかし、私はインターネットでたくさん検索しましたが、解決策のどれも私のために働きませんでした。

フォームを削除してプロジェクトに再度追加しようとしましたが、うまくいきません。

resxファイルは1つしかありません。

VS 2010を使用しています。

また、私は次の解決策を試しましたが、うまくいきませんでした:

  1. https://stackoverflow.com/a/7928191/20746
  2. https://stackoverflow.com/a/10066009

簡単!

  1. プロジェクトを右クリックして、「プロジェクトのアンロード」を選択します

  2. もう一度右クリックして「your_project.csprojを編集」

  3. エラーメッセージに記載されている重複ファイルを検索して削除します。

  4. 保存して閉じます。

  5. 右クリックして「プロジェクトの再読み込み」を選択します 画像の表示

34
Marcelo Lujan

最近この問題が発生しましたが、特定の状況を把握したと思うので、おそらくそれが役に立つでしょう。

Visual Studio IDEを使用して既存のフォームをコピーしました(Form1と呼びましょう)。同じプロジェクトに貼り付けました(Copy of Form1として到着しました)

次に、その新しいコピーの名前をForm2に変更しました。

しばらく時間がかかりましたが、最終的にIDEがForm1Copy of Form1の両方の名前をForm2に変更したことがわかりました

ファイル名は正しかった...内部の実際のクラスだけが命名された。

元の名前を適切なクラスに手動で変更し、voila、それは機能しました。

17
John Kroetch

私は同じエラーがあり、私の場合、次のようにこの問題を修正しました。

enter image description here

強調表示された部分の下には別のファイルsome_name_not_equal_to_main.resxがあり、それを削除した後、プログラムは正常に実行を開始します。

これがお役に立てば幸いです。

4
Sabri Aziri

ファイルの名前を変更した後、新しく作成されたファイル内のクラスとすべてのコンストラクターの名前を変更します。デフォルトでは、ファイルの名前は変更されますが、ファイル内のクラスの名前は変更されません。必要なことをしてください。

1
Harpreet Chawla

これと同じ問題がありました。正確なセマンティクスは不明ですが、複数のファイルを「メイン」フォームクラスの一部として維持することに関連しています。

私の場合、IDEは、「メイン」フォームではない部分クラスファイルの1つにフォーム初期化ルーチンを追加するために、それを頭に入れました。

これにより、2つの「メイン」フォームと競合が発生しました。

追加されたinit関数を見つけて、それらを関連する.resxファイルとともに削除するだけで、問題が修正されました。

1
klinkenbecker

フォームのコピーを作成した場合は、プロパティに移動して、コピーしたフォームの名前を変更します。

ほとんどの場合、フォームのコピーを作成するときに発生します。フォームのコピーを作成すると、新しいフォームの名前は古いものと同じになります。古いフォームの名前が変更されたわけではありません。

この例から:

Visual Studio IDEを使用して既存のフォームをコピーしました(Form1と呼びましょう)。同じプロジェクトに貼り付けました(Form1のコピーとして到着しました)。 Form1 "[]すでに名前を変更している場合はその名前になります]プロパティに移動名前をForm2に変更(または任意のクラス名)

そしてそれは動作するはずです。

また、クラス名を変更すると、コード内のクラス名への参照も変更される可能性があります。そのため、注意が必要です。名前を変更した後、コードを再コンパイルして、参照が変更された場合に元のクラス名(この場合はForm1)に戻すことができるようにすることをお勧めします。その後、新しいクラス参照の使用を開始できます。

0
sgupta