引用项目在编译时“丢失”


102

我有一个包含两个项目的C#解决方案:一个服务(主项目)和一个记录器。该服务使用记录器中的类。我在服务项目中添加了对记录器项目的引用。在设计时,自动完成功能可以正常工作:记录器的类是可见的,我使用的引用已正确着色。

我重新构建解决方案,结果出了问题。引用不再被识别:“名称'Logging'在当前上下文中不存在”,并且类在自动完成中也不再存在。删除并重新附加引用使我回到使标识符可见以自动完成的基本状态。

我已经重新启动,清除了所有缓存,确保这是我计算机上运行的VS 2010的唯一实例。

有什么(显然)是我所缺少的吗?

Answers:


158

在项目属性下检查每个项目的构建类型-我敢打赌一个或另一个将针对构建.NET XX - Client Profile

如果版本不一致,尤其是一个版本不一致,则版本不一致Client Profile,那么它在设计时起作用,但在编译时失败。一个真正的陷阱。

对我来说,Visual Studio 2010中发生了一件有趣的事情,它使项目看似随机地设置为Client Profile,有时是在我创建项目时,有时是在几天后。可能是我不小心按下了某些键盘快捷键...


1
我敢打赌你是对的...如果不记得我上个月问的这个可比问题,就对我感到羞耻!stackoverflow.com/questions/3991361/...
鲍勃·考夫曼

6
@Bob一直在我身上流血,就像您有上一个问题一样,每次发生时,至少有几分钟我对整个过程都感到困惑,直到我想起“哦,等等,客户** ** ing个人资料”
joshcomley

4
我也有VS2012这个问题。原来不是Client Profile问题,而是所引用的项目在4.5中,而所引用的新项目默认为4.0。碰到了4.5,问题就消失了。确实是相同的解决方案,只是另一种变化。
布拉德·马修斯

这是最近在VS 2013中发生的事情。该项目是默认的4.5,但是其中一个库是在4.5.2上构建的。如果项目为4.5.2,并且其中一个库为4.5或4.5.1,则它将起作用。但并非相反。
ahwm 2015年

4

确保此处的两个项目具有相同的目标框架版本: 右键单击项目->属性->应用程序(选项卡)->目标框架

另外,请确保项目“记录器”(要包含在主项目中)的输出类型为“类库”: 右键单击项目->属性->应用程序(选项卡)->输出类型

最后,重建解决方案。

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.