【问题标题】:Random assembly references fail ("Are you missing a using directive or an assembly reference?")随机程序集引用失败(“您是否缺少 using 指令或程序集引用?”)
【发布时间】:2011-04-28 22:43:17
【问题描述】:

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

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

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

其中一个失败的引用是我们针对 3.5 的 Core.dll。我们最近添加了一个面向 4.0 的 CoreEx.dll,在程序集之间共享命名空间。新服务可以看到 CoreEx.dll 但看不到 Core.dll ......即,当我开始输入 using Core.Utilities... Intellisense 时,会从 CoreEx.dll 中提取较小的命名空间集,但不会显示仅出现在 Core.dll 中的任何命名空间.我很确定添加此解决方案后成功构建了解决方案,但这是最近的一个显着变化。

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

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

如您所见,程序集引用失败似乎没有任何押韵或原因......并且有问题的项目可以成功引用解决方案中的其他程序集一些 .我试过清理、重建、重新启动 Visual Studio ......没有任何东西可以永久修复它。这可能是什么原因造成的?

【问题讨论】:

  • 我遇到了您的问题的简单版本,实时语义错误(红色波浪线)和智能感知支持崩溃。重新构建没有帮助,但删除项目并将其添加回来可以解决问题。听起来您对这个问题很熟悉……您首先重新添加了项目,然后遇到了更多问题。为什么会出现简单版本?有什么预防措施吗?真的很烦!

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


【解决方案1】:

检查新项目的目标平台并确保它不是针对 .NET 4 客户端配置文件。如果是,请将其更改为常规 .NET 4

【讨论】:

  • 好主意,但我已经检查了那个...编辑过的问题也这么说。
  • 我再次检查,因为症状是这种情况的特征——example 1example 2example 3——就在那里。或许我以前粗心大意,实际上是在看一个相邻的项目。
  • 我不明白为什么 Visual Studio 似乎已经像这样切换了 .NET 版本......我不记得它之前设置过。感谢您的解决方案。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    解决方案中的依赖项设置是否正确?我见过不止一次项目 A 依赖于项目 B 的情况,但是由于没有设置两者之间的依赖关系,构建偶尔会失败。

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

    【讨论】:

    • 当您说依赖项时,您是指项目引用吗?另外,我尝试先手动构建依赖的项目,并且它们构建成功。但是在那之后手动构建有问题的项目仍然失败。另外,有问题的项目现在每次都失败,所以它似乎不是零星的事情......除非我误解了?
    【解决方案4】:

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

    但是,如果我们使用 VS 2008 专业版,一切正常......我们不需要解决方法,一切都像魔术一样运行......

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

        我通过删除顶部的所有 using 语句并再次手动编写它们解决了这个问题。

        【讨论】:

          【解决方案7】:

          我遇到了类似的问题,程序集引用失败(“您是否缺少 using 指令或程序集引用?”)并且 VS 智能感知让我有机会添加 using,但在解决方案中,引用具有黄色图标并且构建失败了。

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2022-10-18
            • 1970-01-01
            • 1970-01-01
            • 2011-02-02
            • 1970-01-01
            • 2011-04-12
            相关资源
            最近更新 更多