命名空间,别名和Visual Studio窗体设计器

Age*_*t25 5 c# forms alias namespaces designer

我遇到了与Visual Studio 2008中的表单设计器自动生成的冲突的命名空间和代码有问题.我搜索了许多论坛和不同的文档,但是找不到任何解决方案.

我有一个名为Foo.dll的程序集,其中包含以下命名空间/代码:

namespace Foobar.System
{
    public class MySystemClass() { }
}
Run Code Online (Sandbox Code Playgroud)

然后,我有另一个包含som常用形式的程序集:

namespace Foobar.MyCommonForms
{
    public class MyForm : System.Windows.Forms.Form
    {
        public void SomeMethod()
        {
            var systemclass = new Foobar.System.MySystemClass();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这里,编译器显示以下错误:类型或命名空间"Windows"不是命名空间"Foobar.System"的一部分.显然,编译器试图在名称空间Foobar.System.Windows.Forms中查找类System.Windows.Forms.Form!

我已经能够通过在引用程序集Foo.dll时使用别名'x'而不是'global'来解决这个问题,并在我的代码文件中声明'extern alias x',并将'x ::'放在前面每个对名称空间Foobar.System中的类型和类的引用.代码编译.

但似乎表单设计者不会认识到这一点,并在尝试显示表单时给我一个错误.再次,这可以通过在System.Windows.Forms(例如global :: System.Windows.Forms.Button)中对类的每个引用手动放置'global ::'来解决,但每次都有可能在表单,代码自动重新生成,并删除'global ::'部分.

所以,问题是:有没有办法让表单设计者知道用于引用我的程序集Foo.dll的别名'x',还是有另一个更好的解决方案?将命名空间Foobar.System重命名为其他东西只是太多的工作.

Jer*_*Gee 0

据我所知,没有办法解决这个问题。

流行的重构工具如Resharper或Refactor!两者都包含全局重命名命名空间的能力。我会认真考虑使用这些。