1

我有一个包含许多项目的解决方案,这些项目都使用相同的根命名空间。没有代码文件明确命名命名空间。所以可以说根命名空间是ExampleRootNamespace.

现在,当我想将显式命名的命名空间添加到我正在处理的代码文件之一时,就会出现问题。我希望能够将此代码与程序集的其余部分隔离,以便能够针对它运行 FxCop。所以我Namespace Interfaces.CSV在代码文件中添加了类似的东西。

这会导致引用此程序集的任何代码都需要说Imports ExampleRootNamespace.Interfaces.CSV. 到现在为止还挺好。我什至可以针对程序集运行 FxCop。现在的问题是,在其他程序集中我不能再说什么了,比如:

Public class frmInputBoolean Inherits
 ExampleRootNameSpace.frmFormTemplate

Visual Studio 现在要求我将命名空间重命名为:

Public class frmInputBoolean Inherits
     Global.ExampleRootNameSpace.frmFormTemplate

有数百个与此相关的错误。所以我的问题是:

1)为什么第一次在根目录下命名命名空间会导致程序出现问题?

2)在不重命名的情况下是否有解决此问题的方法?

我还想补充一点,ExampleRootNamespace.Interfaces.CSV我没有在代码库的任何地方引用它。我目前只是从一个单元测试项目中引用它。所以我不明白为什么添加这个命名空间会导致问题。

4

2 回答 2

1

在 C# 中,尝试将USING运算符与您的命名空间一起使用。

using ExampleRootNamespace = newExampleRootNamespace;

关于那些有全球问题的人。

可悲的是,我不相信在 VB.NET 中存在一个简单的解决方案

于 2010-09-27T14:16:14.587 回答
1

好吧,看来这可能是 Visual Studio 2008 中的一个错误。由于代码没有更改,但所需Global前缀的问题不再存在。

我这样说是因为我检查了一个有问题的代码文件并尝试添加(正如 Meakins 建议的那样):

Imports ExampleRootNamespace = Global.ExampleRootNamespace

当我这样做时,发生了两件事。

1) 删除了错误高亮和纠错建议,并且 ExampleRootNamespace 被 Visual Studio 识别。代码现在也可以编译。

2)Imports ExampleRootNamespace = Global.ExampleRootNamespace由于在导入语句中使用了 Global 而无效。Visual Studio 说:“在这种情况下不允许‘全局’;需要标识符。” 这意味着这行代码不会编译。所以我把它一起删除了。奇怪的是,尽管它不存在(因此代码像以前一样返回),但没有更多的错误。

我还重新启动了视觉工作室(但在完成上述操作之后)。如果你问我,这很奇怪!

于 2010-09-27T14:36:18.230 回答