随机程序集引用失败(“您是否缺少using指令或程序集引用?”)

时间:2011-04-28 22:43:18

标签: c# .net visual-studio visual-studio-2010

我的应用程序混合了3.5和4.0目标程序集。我正在开发一个针对4.0的新Windows服务,该项目似乎突然无法看到解决方案中的其他一些程序集。意思是,在构建时,对这些特定其他程序集的所有引用都会产生以下错误:

  

名称空间'[Y]'中不存在类型或命名空间名称'[X]'(您是否缺少程序集引用?)

如果我删除了项目引用并重新添加它,那么红色的波浪线会消失,Intellisense会像它应该的那样再次启动。解决方案中的所有其他项目都没有问题。 但是一旦我尝试构建这个新项目,错误就会重新出现。

其中一个失败的引用是我们的Core.dll,其目标是3.5。我们最近添加了一个CoreEx.dll,目标是4.0,在程序集之间共享命名空间。新服务可以看到CoreEx.dll但不能看到Core.dll ...即,当我开始输入using Core.Utilities...时,Intellisense会从CoreEx.dll中选择较小的命名空间集,但不会显示只出现在Core中的任何命名空间.dll文件。我非常确定在添加此解决方案后成功构建了解决方案,但这是近期值得注意的变化。

另一个失败的参考是我们的核心Data.dll,它包含一堆数据集和Entity Framework的东西。这个最近迁移到4.0。再次,我几乎肯定了迁移项目后构建的解决方案,但值得一提。

最后一个失败的引用是一个程序集,它使用来自服务的“up”级别的命名空间。例如,有问题的项目基于命名空间ProductName.Component.ComponentService,并且无法看到基于命名空间ProductName.Component的项目。最近这个问题与有问题的项目一起创建,目标也是4.0。

正如您所看到的,似乎没有任何押韵或理由使汇编引用失败...并且有问题的项目可以成功引用解决方案中其他程序集的某些 。我已经尝试过清理,重新构建,重新启动Visual Studio ......没有任何东西永久修复它。可能导致这种情况的原因是什么?

7 个答案:

答案 0 :(得分:60)

检查新项目的目标平台,确保它不针对.NET 4 Client Profile。如果是,请将其更改为常规.NET 4

答案 1 :(得分:2)

我正在将项目添加到使用.net 4.5的解决方案中。我添加的项目默认为4.5.1。这使得4.5个库与新项目不兼容。我进入了我的新项目的属性,让他们的目标是4.5而不是默认的4.5.1。在我完成之后,我的解决方案能够构建。

答案 2 :(得分:1)

解决方案中的依赖项是否正确设置?我不止一次看到项目A依赖于项目B,但因为没有设置两者之间的依赖关系,所以构建失败了。

在这种情况下的根本原因是构建顺序不是确定性的,成功/失败取决于哪些项目构建(基于更改的内容)以及首先构建(当多个构建时)。

答案 3 :(得分:0)

当我将目标框架更改为4.0时,它对我有用。但这不是我们想要的解决方案。我们想要为我们的项目使用VS 2010 Premium,但目的不是使用.net 4.0 ......主类库项目(.net 2.0)引用了dll“system.web.abstractions.dll”...我在其他项目(.net 2.0)中添加了对这个dll的引用,引用了主类库...编译的解决方案没有任何问题...所以可能是你的visual studio解决方案的情况......

但如果我们使用VS 2008专业人员,一切正常。我们不需要解决方法。一切都像魔术......

答案 4 :(得分:0)

请注意,如果更改命名空间但未更改项目属性中的程序集名称,则可能会发生此情况。

答案 5 :(得分:0)

一旦我通过删除顶部的所有使用语句并再次手动编写它来解决它,就会发生这个问题。

答案 6 :(得分:0)

我有一个类似的问题,程序集引用失败(“你错过了使用指令或汇编引用吗?”)和VS intellisense让我有机会添加使用但在解决方案中引用有黄色图标并且构建失败了。

我解决了这个问题,查看项目属性Target Framework并将.net版本更改为参考解决方案版本,这解决了所有问题。

注意:.net版本应该在项目之间兼容。