【问题标题】:Namespaces, aliases and Visual Studio Forms Designer命名空间、别名和 Visual Studio 表单设计器
【发布时间】:2009-11-26 11:01:15
【问题描述】:

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

我有一个名为 Foo.dll 的程序集,其名称空间/代码如下:

namespace Foobar.System
{
    public class MySystemClass() { }
}

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

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

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

在引用程序集 Foo.dll 时,我已经能够通过使用别名“x”而不是“全局”来解决这个问题,并在我的代码文件中声明“外部别名 x”,并输入“x::”在命名空间 Foobar.System 中对类型和类的每个引用之前。代码编译。

但表单设计器似乎无法识别这一点,并在尝试显示表单时给我一个错误。同样,这可以通过手动将“global::”放在对 System.Windows.Forms 中的每个类的引用(例如 global::System.Windows.Forms.Button)前面来解决,但每次都有机会表单,代码自动重新生成,'global::'部分被删除。

所以,问题是:有没有办法让表单设计者知道用于引用我的程序集 Foo.dll 的别名“x”,或者还有其他更好的解决方案吗?将命名空间 Foobar.System 重命名为其他名称实在是太麻烦了。

【问题讨论】:

  • 我在 VS 2010 中也遇到了这个问题!!

标签: c# forms namespaces designer alias


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2017-12-14
    • 2011-12-16
    • 1970-01-01
    • 2015-02-17
    • 2018-04-08
    • 2011-03-15
    • 2021-01-04
    • 2011-07-15
    • 1970-01-01
    相关资源
    最近更新 更多