Visual Studio 2010突然看不到名称空间?


83

我的C#WinForms解决方案有两个项目。DLL是我正在处理的主要项目,而可执行文件WinForms则称为“ Sandbox”,这样我就可以轻松地一次编译/运行/调试DLL。

我正在两个项目的.Net 4.0中工作。

一切工作正常,直到我添加了一些看似纯真的代码,并在DLL中引用了System.Web。现在,我的沙盒项目看不到DLL项目的名称空间。我没有更改任何我认为应该会影响到此的内容。

如果我从沙盒引用中删除对DLL的项目引用,然后重新添加,则红色下划线全部消失,所有类的颜色编码都返回;等等。但是,一旦我尝试构建解决方案,整个事情就会再次崩溃。

右键单击沙箱引用中的DLL项目并在对象浏览器中查看时,我可以看到名称空间及其中的所有内容。

我感觉这可能是某种错误?

这是某种VS2010错误吗?几个月前,我遇到了同样的问题,当时只能通过制作一个新项目并重新导入文件来修复它。但是,这一次,我拥有数十亿个文件,只有在万不得已时才这样做!

编辑:恐慌地浏览并撤消了所有更改之后,试图查找引起问题的原因,似乎是这一行:

string url = "http://maps.google.com?q=" + HttpUtility.UrlEncode(address);

如果我注释掉这一行,则不会出现名称空间错误,并且项目会正常运行。我看不到这行有什么毛病。

Answers:


149

我已经准备好将其声明为VS2010中的错误,这已经对太多程序员造成了困扰。修复很容易:“项目+属性”,“应用程序”选项卡,将“目标框架”更改为“ .NET Framework 4”,而不是默认情况下选择的客户端配置文件。

System.Web不包含在客户端配置文件中。首先具有此选项是很愚蠢的,客户端配置文件仅比.NET 4.0完整版小15%。默认情况下选择它更加愚蠢。但是我离题了。

更新:幸运的是,这一切已在VS2012中修复。这不再使客户端配置文件成为新项目的默认配置文件。客户端配置文件已在.NET 4.5中完全淘汰,这是很好的做法。


1
感谢那。我的DLL设置为.Net 4.0,但沙箱设置为.Net 4.0客户端配置文件。在这个项目上工作了5个月之后,当整个事情似乎都没有理由崩溃时,我感到非常恐慌……至少我下次会知道的!
奥扎2011年

27
这些答案是本网站的真实内容。我对人类的信念有了一点提高,我的项目终于得以编译。谢谢。
CloudMeta 2011年

1
我在所有项目中都将Target Framework更改为4.0,但是仍找不到依赖项目的名称空间。还有什么我应该确定的吗?
Steven Ryssaert 2011年

@UwConcept-这与版本号无关。这是关于完整vs客户资料。如果这没有帮助,请提出您自己的问题。
汉斯·帕桑

@HansPassant是的,如果我的问题令人困惑,我很抱歉。我使用的是4.0客户端版本,并将其更改为4.0。尽管如此,我的解决方案中其他项目中的命名空间仍然无法跨项目找到。
Steven Ryssaert 2011年

8

检查并确保两个项目都将非客户端概要文件用于其目标框架(转到每个项目的属性以执行此操作)。


谢谢马克。你和汉斯把它钉在了头上,把它固定了。
奥扎2011年

2

一种可能性是类库的目标.NET Framework版本高于项目的版本。我遇到了这个问题,并通过关闭Visual Studio,重新打开Visual Studio,清理和重建解决方案来解决了这个问题。这对我有用。在其他一些帖子上,我已经阅读了回复,并且大多数用户都按照这种方式解决了问题。


1
四年半以前,这个问题已经得到令人满意的回答。
奥扎

+用于添加与密切相关的错误有关的有用和有用的信息
Eric Brown-Cal

@Ozzah作为2017年调查此错误的人,我绝对很高兴获得更多信息。+1
Cowthulhu

1

尝试先单独使用Sandbox dll仅构建项目。

然后将您的可执行项目指向所需的dll,并确保copy local将其设置为true。在参考设置中。

然后构建可执行项目。


出于对万物的热爱,请确保将目标类型设置为“编译”而不是“内容”(这是出于某种原因)
jcolebrand 2012年

0

将目标框架从“ .NET Framweork 4客户端配置文件”更改为“ .NET Framework 4”对我来说也是一个类似的问题。我同意客户端配置文件似乎并没有太大优势。在似乎记得Visual Studio默认为客户端配置文件之前,我似乎迷上了寻找的奇怪错误。我猜得到错误的故事的寓意是:如果“重建解决方案”不起作用,请检查目标框架...


0

如果您已经尝试进行框架更改,但仍然没有用,我希望它对您有用(就像对我一样):只需从您的项目中添加必要的引用。很明显,但是直到发现问题所在,我才做错了。


0

我只是遇到了这个问题,结果是我使用了多个具有相同对象名称的名称空间(即,业务对象与mvc模型具有相同的名称)。

完全限定名称对我来说解决了这个问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.