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を使用しています。
また、私は次の解決策を試しましたが、うまくいきませんでした:
簡単!
プロジェクトを右クリックして、「プロジェクトのアンロード」を選択します
もう一度右クリックして「your_project.csprojを編集」
エラーメッセージに記載されている重複ファイルを検索して削除します。
保存して閉じます。
右クリックして「プロジェクトの再読み込み」を選択します 画像の表示
最近この問題が発生しましたが、特定の状況を把握したと思うので、おそらくそれが役に立つでしょう。
Visual Studio IDEを使用して既存のフォームをコピーしました(Form1
と呼びましょう)。同じプロジェクトに貼り付けました(Copy of Form1
として到着しました)
次に、その新しいコピーの名前をForm2
に変更しました。
しばらく時間がかかりましたが、最終的にIDEがForm1
とCopy of Form1
の両方の名前をForm2
に変更したことがわかりました
ファイル名は正しかった...内部の実際のクラスだけが命名された。
元の名前を適切なクラスに手動で変更し、voila、それは機能しました。
私は同じエラーがあり、私の場合、次のようにこの問題を修正しました。
強調表示された部分の下には別のファイルsome_name_not_equal_to_main.resxがあり、それを削除した後、プログラムは正常に実行を開始します。
これがお役に立てば幸いです。
ファイルの名前を変更した後、新しく作成されたファイル内のクラスとすべてのコンストラクターの名前を変更します。デフォルトでは、ファイルの名前は変更されますが、ファイル内のクラスの名前は変更されません。必要なことをしてください。
これと同じ問題がありました。正確なセマンティクスは不明ですが、複数のファイルを「メイン」フォームクラスの一部として維持することに関連しています。
私の場合、IDEは、「メイン」フォームではない部分クラスファイルの1つにフォーム初期化ルーチンを追加するために、それを頭に入れました。
これにより、2つの「メイン」フォームと競合が発生しました。
追加されたinit関数を見つけて、それらを関連する.resxファイルとともに削除するだけで、問題が修正されました。
フォームのコピーを作成した場合は、プロパティに移動して、コピーしたフォームの名前を変更します。
ほとんどの場合、フォームのコピーを作成するときに発生します。フォームのコピーを作成すると、新しいフォームの名前は古いものと同じになります。古いフォームの名前が変更されたわけではありません。
この例から:
Visual Studio IDEを使用して既存のフォームをコピーしました(Form1と呼びましょう)。同じプロジェクトに貼り付けました(Form1のコピーとして到着しました)。 Form1 "[]すでに名前を変更している場合はその名前になります]プロパティに移動名前をForm2に変更(または任意のクラス名)
そしてそれは動作するはずです。
また、クラス名を変更すると、コード内のクラス名への参照も変更される可能性があります。そのため、注意が必要です。名前を変更した後、コードを再コンパイルして、参照が変更された場合に元のクラス名(この場合はForm1)に戻すことができるようにすることをお勧めします。その後、新しいクラス参照の使用を開始できます。