3

問題のプロジェクトの背景を簡単に説明します。それは C# .Net 4、スマート クライアント ファクトリを備えた WinForms であり、残念ながら多くの視覚的継承です。

これは、私が取り組んでいるチームが経験している、かなり断続的な問題の簡単な概要です。

誰かがクライアント モジュール プロジェクトの 1 つを開いてビューの 1 つで作業を開始し、ビューをダブルクリックしてデザイナーを開くと、Visual Studio は次のような設計時エラーを表示します。

もう後戻りはできません。次の回避策を実行せずにここから再構築すると、エラーは引き続き発生します。私たちが見つけた唯一の回避策は、クライアント ソリューションを消去し、Visual Studio を閉じて (それを行う必要あります)、Visual Studio を再度開いて、ソリューションを再構築することです。次回ビューを開こうとすると、機能します。しかし、エラーは再び発生します - X量の再構築の後であるようです (おそらく、ソリューションの構築中にデザイナーでビューが開いている間だけですか?)

この問題を実際に掘り下げるために時間を取った人は誰もいませんし、現時点では誰も時間がありません! それで、何が起こっているのかについて誰かが考えを持っているのではないかと思っていました(少し長いショットです)?それとも、これを調べる時間が少し取れたら、どこから掘り始めるべきかのヒントになるでしょうか?

4

1 に答える 1

0

視覚的な継承を使用する場合、これらの問題は現実のものとなり、なくなることはほとんどありません。

現在のプロジェクトでは、UserControl の継承を広範囲に使用しています。私はあなたが非常に頻繁に説明している問題を抱えていました。時間が経つにつれて、私はデザインを改良し、今ではたまにしか起こらないところまでデザインを改善しました。

走行距離はおそらくさまざまですが、この問題を軽減するために私がした主なことは、設計時のアセンブリ間のデータバインディングを取り除くことだったと思います.

この例は、フォームに BindingSource をドロップし、そのデータ ソースを別のアセンブリの型に設定する場合です。

(まあ、私は自分の UI と同じアセンブリで型を定義したことがないので、常に別のアセンブリからのものです。したがって、私が知る限り、アセンブリ間のことは要因でさえないかもしれません。)

とにかく、これらの設計時のバインディングのほとんどまたはすべてを取り除き、すべてのバインディングを実行時に設定することになりました。問題は 99% 解消されました。それでも時々発生しますが、トラブルシューティングを試みるつもりはありません。

何をするにしても、ジェネリック基本クラスからフォーム/コントロールを継承しないでください。それは100%の確率で壊れます。これを行う必要がある場合は、クイック検索で見つけることができる回避策があります。

Microsoft がこれらの問題を修正することはほとんどないので、慣れておいてください。

于 2011-10-28T23:16:35.317 に答える