0

Visual Studio Express 2013では、 "CustomButton"というカスタムボタンを持つ "AddressVerifier"というカスタムコントロールを作成しています。フォームを変更するたびに、ラベルを移動するだけで、AddressVerifier.Designer.vbファイルが変更され、コンパイルエラーが発生します。私が最初の2つの修正のいずれかを選択すると、それはうまくコンパイルされ、再びフォームを修正するまではすべて正常です。次に、次のコンパイルの修正が削除されます。タイプが定義されていない、Visual Studio Express 2013

私は事実上これはバグですが、回避策はありますか?

enter image description here

+1

コードの画像を投稿しないでください。それは私たちがあなたを助けることをより困難にします。つまり、あなたは良い答えを得る可能性は低いです。 –

+0

フォームを変更するたびに、デザイナーファイル全体が再び書き出されます(ポストはAddressVerifierデザイナーだと言いますが、コントロールを使用する*フォームのように見えます)。失われた参照は、 'CustomButton'プロジェクトがどのように含まれているか、名前空間 – Plutonix

+0

のために発生している可能性があります。そういうわけで、イメージだけが行うのです。 Plutonix、私にとって奇妙なのは、いずれかの修正プログラムを選択すると動作しますが、フォームを修正すると問題が戻されるということです。問題は、フォームデザイナーがコンパイルエラーを作成するコードを変更しているように見えます。 AddressVerifierは、カスタムコントロールとして使用されるフォームですが、CustomButtonを含みます。したがって、基本的にカスタムコントロールのカスタムコントロールです。 – PaulOTron2000

答えて

1

これは、名前の衝突に起因する可能性があります。タイプと名前空間が両方ともAddressVerifierと呼ばれているようです。 IDEはコード内の名前空間の名前を使用していますが、コンパイラはこれを型として解釈しています。解決策は、同じ文脈で2つのものに同じ名前を使用しないことです。

EDIT:Global修飾子を追加することの提案は、コンパイラがその名前を型ではなく名前空間として解釈するように強制することです。 IDEは名前の衝突の可能性のあるすべての型と名前空間をスキャンするのではなく、発生しないように名前が付けられていると仮定しているため、デザインコードファイルが再生成されると元に戻ります。これは制限だと考えられますが、IDEのバグではありません。

+0

それは完全にそれでした。私の名前空間とクラスは同じでした。クラス名をAddressVerifyClassに変更し、ブームをすべて消しました。私はこれがかなり不自然に見えていないと私は賭けたが、ここでは自白している。私はあなたが遭遇するだろう最も ".NETを介して自分のやり方を偽って"いるかもしれない。私はVB6のプログラマーだった年前(そして私はかなり良かったですが).netの前に職業を変えました。今では自分のビジネスのためだけにソフトウェアを作って例を挙げています。 – PaulOTron2000

+0

私は、このタイプの問題を避ける最善の方法は、常にあなたのプロジェクトに名前をつけてルートネームスペースに「ビジネス名」を付けることだと思います。たとえば、AddressVerifierという名前のプロジェクトを作成していた場合、実際のプロジェクト名とルート名前空間は 'Wunnell.AddressVerifier'になります。私はまだ同じコンテキストで2つの異なるもののために同じ名前を使用することを避けることをお勧めしたいと思います。 'AddressVerifyClass'はむしろ面倒なので、ここであなたの名前にいくつかの考えを入れ、最大限説明的な2つの異なる名前を考えてみることをお勧めします。 – jmcilhinney

関連する問題