Visual Studio 2008でフォームデザイナーによって自動生成される名前空間とコードの競合に問題があります。多くのフォーラムやドキュメントを検索していますが、この問題に対する任意の解決策。名前空間、エイリアス、Visual Studioフォームデザイナー
I持って次の名前空間/コードとFoo.dllと呼ばれる1つのアセンブリ:ここ
namespace Foobar.MyCommonForms
{
public class MyForm : System.Windows.Forms.Form
{
public void SomeMethod()
{
var systemclass = new Foobar.System.MySystemClass();
}
}
}
、コンパイラ:次に
namespace Foobar.System
{
public class MySystemClass() { }
}
、私はソム一般的に使用されるフォームが含まれている別のアセンブリを持っています次のエラーを表示します。型または名前空間 'Windows'は名前空間 'Foobar.System'の一部ではありません。明らかに、コンパイラは名前空間Foobar.System.Windows.FormsのクラスSystem.Windows.Forms.Formを検索しようとします。
アセンブリFoo.dllを参照し、コードファイルで 'extern alias x'を宣言して 'x:'を入力すると、 'global'の代わりに 'x'という別名を使用して解決できました。名前空間Foobar.Systemの型とクラスへのすべての参照の前にあります。コードがコンパイルされます。
しかし、フォームデザイナーはこれを認識せず、フォームを表示しようとするとエラーが表示されるようです。これは、System.Windows.Formsのクラス(たとえばglobal :: System.Windows.Forms.Button)のすべての参照の前に手動で 'global ::'を置くことで解決できますが、コードは自動的に再生成され、 'global ::'部分は削除されます。
質問:私のアセンブリFoo.dllを参照するために使用されるエイリアス「x」をフォームデザイナーに認識させる方法はありますか、それとももっと良い解決法がありますか?名前空間Foobar.Systemの名前を変更することは、あまりにも多くの作業です。
この問題はVS 2010でも発生しています。 –