【问题标题】:When compiling app, it removes References编译应用程序时,它会删除引用
【发布时间】:2012-01-09 16:21:41
【问题描述】:

我对 Visual Studio 项目有一个奇怪的问题。我正在使用 .Net 4 框架编写 C# 应用程序。我添加了对一些 DLL 的引用(我相信它们是在 3.5 中编译的),它们在我构建解决方案之前一直有效。发生这种情况时,它会删除引用,因为编译器无法看到这些 DLL 中的命名空间。有什么想法吗?

错误:

错误 4 找不到类型或命名空间名称“XXX”(您是 缺少 using 指令或程序集引用?)

【问题讨论】:

  • 通常对于这种行为,您应该在错误和警告窗口中看到警告 - 我的猜测是您的项目中不存在其中一个引用的必需引用。
  • 您是否在项目中设置了 ecopyLocal = true..?还要记住,如果你是 .dll 的 GAC,4.0 GAC 与 3.5 GAC 是分开的
  • @Neil Knight 您是否将 dll 直接复制到 bin 目录中?
  • @DJKRAZE、@Matthew Cox:是的,我已经将这些设置 Copy Local 设置为 true

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


【解决方案1】:

我已经设法解决了这个问题。我检查了Project Properties,发现它使用的是.Net 4 Client Profile,而不是.Net 4 Full 框架。将此更改为完整版本已解决了我的问题。我认为问题是由于Client Profile 中缺少System.Web 命名空间引起的。

【讨论】:

    【解决方案2】:

    我建议您将这些 dll 文件存储在解决方案中的单独文件夹中,然后从新的所述文件夹中添加对它们的引用。将 dll 直接复制到 bin 目录时,我遇到了同样的问题。 VS 将在干净的构建上擦除所有这些 dll,因此它不是永久存储所述 dll 的理想选择。

    另一个说明:

    尽管有一些选项可以防止我建议的情况,但从我个人的经验来看,它似乎仍然会发生,我们都知道 VS 并非没有错误! =P

    【讨论】:

    • 如果您正在使用 .config 文件,您是否也可以尝试将项目设置回 3.5 项目而不是 4.0。如果您还没有意识到,请记住,4.0 添加了引用连同 Tokens,这几乎听起来像是一个关于从 3.5 和 4.0 引用 .dll 的版本控制问题,如果不看你如何定义你的命名空间也很难分辨
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    相关资源
    最近更新 更多