2017-01-26 20 views
0

WPFプロジェクトにカスタムのユーザーコントロールがあります。私のソリューションはもはやコンパイルされません。ビルド/インクルード後(binとobjフォルダを削除した後でも)VSは2つのコードファイルを生成します:control.g.vbとcontrol.givbVisual Studio WPFで同じ競合する部分クラスファイルが生成される

これらのファイルのコードには、部分クラスcodebehindクラスに接続され、生成された2つのファイルは同じです。 Visual Studioは、「Public Sub InitializeComponent()には同一のシグネチャを持つ複数の定義があります」、control.g.vbに1つ、control.givbに1つなどのコンパイルエラーを引き起こして、互いに競合すると判断します。

何が起こっているのですか?どのように起こりましたか、どうすれば修正できますか?

私はgoogle、SO、およびMSDNのすべての関連キーワードを検索しました。私が見つけた最も関連性の高いアドバイスは、binとobjファイルを削除して、きれいにして再構築してみたところです。

例エラー エラー 'Public Sub System_Windows_Markup_IComponentConnector_Connect(Integer、target As Object)'は同一のシグネチャを持つ複数の定義を持っています。 {ソリューションファイルパス} \ obj \ x86 \ Debug \ Controls \ユーザーコントロール{フォルダ} .g.i.vb {プロジェクト}

+0

これらのファイルは常に生成されます。私が賭けていたら、あなたのユーザーコントロールの一方または両方の名前空間を変更したが、正しくはしなかったと思います。これらのコントロールのXAMLとcsファイルをソリューション外の場所にコピーし、存在する場所に新しいバージョンを作成してから、元の各ファイルから最小限のものをコピーすることをお勧めします彼らの新しいバージョンに変換します。つまり、クラス定義(名前空間はありません!)だけをコピーし、XAMLのルート要素を除くすべてのものをコピーします。コンパイルするには、 – Will

+0

に必要な属性だけを追加してください。それでも問題が解決しない場合は、新しいソリューションを作成し、ユーザーコントロールの1つをコピーして、問題を再現しながらすべてを編集します。最小限の例に結びつけたら、[編集]に投稿してください。 – Will

+0

私が知っている限り、私は名前空間に全く触れていません。私は新しい場所や何かにそれらを移動しようとしなかった。 さらに、このソリューションでは、1つのプロジェクトのごく一部を制御できます。それ以上のものを編集しようとすると、プロジェクトの他の開発者に問題が発生します。 – Paladin852

答えて

0

短い答え:Visual Studioでファイルの名前を変更するときは非常に注意してください。

私はいくつかのファイルとクラスの名前を変更しましたが、すべての参照をキャッチしませんでした。自分自身のコードビハインドファイル以外の名前のクラスや、それが入っていたファイルとは異なる名前のクラスを指すコントロールを持っていました。Visual Studioが混乱しているのは不思議ではありません。

関連する問題