0

我用一些静态方法创建了一个名为 Transactions 的密封类并成功编译它。然后我创建了一个测试项目来测试我所有方法的功能,并添加了对 Sealed Class 的 dll 文件的引用。

当我开始在我的测试项目中键入类的命名空间时,intellisense 会解析引用并添加它。

我什至可以键入类名,intellisense 提供类的公共方法和属性的完整列表,但是当我尝试编译项目时,我收到错误“找不到类型或命名空间名称‘事务’(你是缺少 using 指令或程序集引用?)”

当我双击错误时,它指向代码顶部的命名空间引用。如果我删除命名空间,当我将鼠标悬停在我的方法调用上时会得到一个问号,提示添加我刚刚删除的命名空间。什么???

因此,一方面它抱怨它在编译期间找不到命名空间,另一方面,如果我删除命名空间,它会识别方法的依赖关系并希望我将其添加回来。我真的被困在一块岩石和一个坚硬的地方之间。

我唯一的怀疑是使用导致问题的密封类,因为如果我创建另一个类(不是密封)并添加相同的方法,问题就会消失。

想法或建议将不胜感激。这是 .NET 4.0 框架

4

2 回答 2

1

如果它们都使用相同的框架“风格”(客户端配置文件/完整的框架,不同版本的框架),请检查您的项目属性。这通常是您的问题的原因。

于 2012-10-06T18:48:16.747 回答
1

好的,所以我想通了这个问题。事实证明,我的测试应用程序自动设置为使用 .NET 4 客户端配置文件。当我注意到其中一个警告指出由于对 System.Web 的依赖而无法解析对我的 Transactions dll 的引用时,我发现了这一点。

当我尝试添加参考时,我找不到它,并看到可用程序集的结果是根据 .NET 4 客户端配置文件过滤的。在我更改配置文件以匹配我的程序集(.NET 4.0)的配置文件之后,我能够添加对 System.Web 程序集的所需引用,并且我的代码编译没有问题。

对我来说,这种经验的道德是不要将环境中出现的警告视为理所当然,因为尽管大多数时候它们可能会被忽略,但在某些情况下它们实际上也有助于解决错误。

希望这篇文章对其他人有所帮助,但问题的标题可能会产生误导,因为我在发布它时处于错误的假设之下。

谢谢

于 2012-10-06T18:53:09.640 回答