web-dev-qa-db-ja.com

「名前空間xにはすでにxの定義が含まれています」エラーを修正する方法VS2010への変換後に発生

具体的には、Resources.Designer.cs

エラー2名前空間「ModulusFE」には「StockChartX」の定義がすでに含まれていますResources.Designer.cs 11 21 ModulusFE.StockChartX

私はこれをグーグルで調べましたが、まだかなり混乱しています。誰かが私が試してみたいことを知っていますか?

再構築とクリーニング、およびResources.Designer.csファイルは再構築されることを期待していますが、運はありません。

コードの上部には次のように書かれています:

// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.225
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>

どんなアイデアでも大歓迎です。

50
stormist

私は約1年前にこれを経験しましたが、根本原因が何であるかを正確に覚えていませんが、次の2つのことを試してみてください。

  1. (「Resources.Designer.cs」がそうであるように)自動生成されたファイルである場合は、それを削除してVSに再生成させてみてください。
  2. 個別に、または#1と組み合わせて、ソリューションエクスプローラーでShow All Filesを選択するか、Windowsエクスプローラーでソリューションフォルダーを開きます。ファイルのバージョンが何らかの理由でプロジェクトから除外されたため、 VSしかし、それでも怒っています...
44
johnny

私もこの問題を抱えています。それは、新しい名前空間を作成したが、親名前空間に同じ名前のクラスが含まれていたためです。

26
Warren Rumak

これは古い質問ですが、使用した修正が見つからなかったため、ここに追加しました。

私の場合、それは親名前空間のクラスと同じ名前の名前空間でした。

これを見つけるために、オブジェクトブラウザーを使用して、既に定義されているアイテムの名前を検索しました。

エラーが発生しているのにこれができない場合は、不満を言っているアイテムの名前を一時的に変更し、問題のあるアイテムを見つけます。

15
Anglefroghammer

VSコードのOmniSharpのバグのように見えます。

私にとっての解決策は、「Restart OmniSharp」コマンドを実行することでした。

-ctr shift P-「Restart OmniSharp」と入力します。

これは私のためにそれを修正しました。

12

残念ながら、他の答えはどれも役に立たなかった。私の問題は特にWPFプロジェクトで発生しました。

MainWindowフォルダーの下にフォルダーを作成すると、問題が発生しました。これにより、ProjectName.MainWindow.Folderのような名前空間が効果的に作成されました。現在、静的デザイナーコードがあるため、Visual StudioはクラスMainWindowと名前空間Project.MainWindow.Folderの間で混乱します。解決策として、FolderMainWindowから移動しました。クラスビューまたはソリューション/プロジェクトを見ると、その中に存在する名前空間とクラスを認識するのに役立ちます。

5
joe_maya

私もこれと同じ問題を抱えていましたが、それはツールと同じコードの背後にある関数に名前を付けたことによるものです。単純な間違いですが、心に留めておくべきこともあります。

3
Neil

これはちょうど私に起こった。元々ソース管理下にあったプロジェクトを複製しました。すべての名前を適切に変更しましたが、すべてのファイルのファイル許可はまだ読み取り専用に設定されていました。フォームコントロールの変更を開始すると、元のリソースファイルが読み取り専用であったため、Visual StudioがResource1ファイルを自動的に作成しました。

これを修正するために私がしたことは次のとおりです。

  1. プロジェクトファイルへの書き込み権限を許可します。
  2. 元のリソースファイルを削除しました
  3. すべてのフォーム要素に対してCtrl-Aを押し、次にCtrl-Xを押してそれらを切り取ります。
  4. フォームを保存します。
  5. Ctrl-Vを押してすべて貼り付けます。
  6. フォームを保存します。

自動生成されたコードはそれ自体で更新されなかったため、これを行う必要がありました。そのため、フォームに変更を加えて更新を「強制」しました。これを行わないと、ファイルのアクセス許可を変更する前に存在しなくなったフォーム要素から大量のコードが残りました。

3
gonzobrains

私は同様の問題を抱えていましたが、私が読んだものとは異なる解決策を見つけました。 P Walkerの回答を読んだ後、私は修正に至りました。

日本語のリソースファイルに間違った名前を付けたときに問題が発生しました。長い話を簡単に言えば、日本語用のリソースを作成しようとしていましたが、誤ってlocalized.jp.resxと名付けました。そして、iso言語コードは日本語ではjpではなくjaであることに気付きました。ファイル名をlocalized.ja.resxに変更し、デザイナーファイルにあるすべてを削除すると、問題が解決しました。

これが私の問題を解決したもので、うまくいけば他の人の助けになります。

3
werdsackjon

同様の問題があり、ディレクトリから.csファイルのコピー/バックアップを削除することで解決しました。

3
RSSM

私は次の定義を持つxamlファイルを持っていました

<Window x:Class="mm2.Views"
   .etc..
/>

mm2.Viewsは、私のアプリでは名前空間の名前でした。

それを修正するために、xamlオブジェクトの名前を正しく変更しました。

<Window x:Class="mm2.Views.RecordedTracks"
   .etc..
/>
3

同じ名前のクラスを定義する異なるaspx.csファイルを使用している場合は、使用できます

<compilation targetFramework="4.5" />

<system.web> web.configファイル内。

クラス名を変更することを強くお勧めしますが。

2
frezq

同様の問題(Universalプロジェクト、Visual Studio 2015)がありましたが、次の変更を加えて解決しました。

App.xml.csでは(大丈夫でした):

namespace Test.Main {

間違った、古いバージョンのApp.xml:

x:Class="Test.Main"

良い、新しいバージョンのApp.xml:

x:Class="Test.Main.App"
2
Miki

同様の問題に出会いました。 edmxファイルからデータベースを生成した後、「すべて保存」および「ビルド」をクリックすると、作成したすべてのタイプ/モデルクラスがエラーボックスに表示されました。私はこれがなぜ起こったのかを調査し、あなたの返信が示唆するように、それは自動生成されたものだと思いました。

ただし、自動生成されたクラスを削除して再生成するなどのソリューションは、私にとってはうまくいきませんでした。

最終的に忍耐が尽きたので、別の方法で修正することにしました。スクリプトが保存されたので、edmxファイル(およびweb.config内のその参照)を削除し、戻って「データベースからのモデル」を使用して別のファイルを作成し、その後は触れませんでした。

言うまでもなく、私はそれがそのようになったことにかなり怒っていました。

2
Kody Crossman

WPFアプリケーションでこれに似たことが起こりました。よりわかりやすい名前空間を宣言して、クリーンアップを試みたときに発生しました。コードビハインド(またはcs)の名前空間にWindowクラスと同じ名前を付けたため、問題が発生しました。コードビハインドの名前空間では、最後のセクション(右端のドットの後)が取り除かれ、クラスの宣言とインスタンス化に使用されます。以下のWinに注意してください。

xaml

<Window x:Class="FrameApp.UI.Invoice.Win" ...>

コードビハインド

namespace FrameApp.UI.Invoice
{
    public partial class Win : Window
    {
        public Win()
    }
}

明らかな見落としですが、表示されたすべてのエラーで少なくとも1時間遅れました。

2
Chad Kuehn

私はこの問題を抱えていましたが、私のものはここで述べた問題とは少し異なりました。プロジェクトを整理し、いくつかのクラスを新しいフォルダに移動しました。 「AddFilter」フォルダーに移動した「AddFilter」クラスがあったので、実際には名前空間の名前を共有しているクラスを作成していました。これは、競合する他のクラスを見つけることができなかったため、最初は見つけるのが少し面倒でした。代わりに名前空間と競合していました。

2
David Edwards

この問題は、1つのテーブルに2つのDALクラスを追加したためだと思います。このテーブルがリレーションに含まれている場合、そのテーブルのtable_name.dbmlを削除し、関連するテーブルのテーブル名を保持します。いずれかを使用する必要があります。

2
Galilo Galilo

私は今も同じ問題を抱えていましたが、最も簡単な見落としの1つであることがわかりました。クラスを構築し、あるクラスファイルから別のクラスファイルにコードをコピーして貼り付けていました。たとえば、Class2でクラスの名前を変更すると、クラス名の横にドロップダウンがあり、Class2へのすべての参照を変更するかどうかを尋ねます。「yes」を選択すると、Class1が変更されます。 Class2の名前。

私が言ったように、これは非常に簡単な監視であり、しばらく頭を掻きましたが、他のファイル、特にコピー元のファイルを再確認して、VSがあなたの名前を変更していないことを確認してくださいシーン。

2
Kyle

これは少々Edgeのケースかもしれませんが、開発環境で時々これに遭遇します。 en-HKをサポートするには、Windowsでカスタムカルチャを設定する必要がありました。 Windows 8.1は、Windows 2012 R2と同様にこのカルチャをネイティブにサポートするようになりましたが、古いマシンではカルチャを作成する必要があります。このカルチャ設定を持たないマシンでは、このエラーが報告されます。解決策は、マシン上でカルチャを作成することです(この目的のためにコンソールアプリが作成されています)。すべてが再び機能し始めます。

2
P Walker

これは最善の解決策ではありませんが、本当に気にしないのであれば簡単な解決策です。クラスの名前を変更しただけです。それで、私はクラスカードを持っていて、それをMyCardに変更しました。

2
mosborn1987

私も、WPFプロジェクトのターゲットフレームワークをフレームワークバージョン4.0クライアントプロファイル->フレームワーク4.0に変更すると、このエラーを受け取りました。それ自体で解決されます。

2

私が解決したのは、モデルブラウザからすべての列挙型を削除してから、再度追加することでした。なんとなく奇跡的に、ツールはすべてを完全に再生成し、エラーメッセージは消えました(VS2012、FYIを使用しています)。

2
CokoBWare

.net 4.5.1から4.7.2に変換した後、ソリューションのwinformでこの部分的なクラスの問題に遭遇しました。

最初は、コンパイラが部分クラスについて文句を言っていなかったが、修飾なしでproperties.default ...を使用していたという問題。 Global :: solnNameSpaceを追加した後。修飾子、その後、部分クラスの問題を取得しました。

このスレッドで回答を確認した後、リソースデザイナーファイルを確認します。ソリューションのクラスはそうではないのに、明示的なsolnNameSpaceで生成されたことがわかりました。また、solnNameSpaceは、問題のあるクラス名の名前と同じです。

最小限の労力と時間で問題を解決するために、Global ...修飾子をバックアウトし、明示的な名前空間...およびendステートメントをリソースデザイナーファイルから削除しました。リソースデザイナファイルの自動生成を引き起こす変更があった場合、後でトラブルに巻き込まれる可能性があることは知っていますが、締め切りが迫っていました。ソリューションは、ソリューションの性質と複数プロジェクトでの使用を許容する変更がないため、長期的なソリューションではなく、一時的な変更に関するドキュメントを作成しました。

1
gg89

この問題がありました。これは、App_Codeディレクトリ内のフォルダーの名前を変更し、iisサイトフォルダーにリリースしたためです。元の名前付きフォルダーはターゲットディレクトリにまだ存在していたため、複製されます(コピーする前にターゲットを完全に削除することはありません)とにかく古いフォルダーを削除するとこれが修正されました。

1
john blair

これは私に起こりました、私は実際に同じ名前空間「OtpService.Models.Request」の下に同じ名前の別のクラスがあることに気づいたので、私がしたことはただ2番目のクラスの名前空間を「OtpService.Models.Request .ExtraObj」。競合するクラスの名前を他の名前に変更したくないため、これを行いました。

1
DAVID OLASUPO