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 {プロジェクト}
これらのファイルは常に生成されます。私が賭けていたら、あなたのユーザーコントロールの一方または両方の名前空間を変更したが、正しくはしなかったと思います。これらのコントロールのXAMLとcsファイルをソリューション外の場所にコピーし、存在する場所に新しいバージョンを作成してから、元の各ファイルから最小限のものをコピーすることをお勧めします彼らの新しいバージョンに変換します。つまり、クラス定義(名前空間はありません!)だけをコピーし、XAMLのルート要素を除くすべてのものをコピーします。コンパイルするには、 – Will
に必要な属性だけを追加してください。それでも問題が解決しない場合は、新しいソリューションを作成し、ユーザーコントロールの1つをコピーして、問題を再現しながらすべてを編集します。最小限の例に結びつけたら、[編集]に投稿してください。 – Will
私が知っている限り、私は名前空間に全く触れていません。私は新しい場所や何かにそれらを移動しようとしなかった。 さらに、このソリューションでは、1つのプロジェクトのごく一部を制御できます。それ以上のものを編集しようとすると、プロジェクトの他の開発者に問題が発生します。 – Paladin852