【问题标题】:Can not reference other projects不能参考其他项目
【发布时间】:2011-07-03 09:08:25
【问题描述】:

我想在 Visual Studio 解决方案中创建 3 个项目:

  • Windows 服务(引用业务层、公共层、log4net.dll)
  • 业务层(参考公共层、log4net.dll)
  • 公共层(参考 log4net.dll)

步骤:

  1. 我使用向导创建了业务层和公共层,没有做任何修改。我设置了参考,一切正常。

  2. 然后我创建一个新的 Windows 服务项目添加到解决方案。我注意到它添加了目标平台 x86 而不是 Any CPU。我引用了这 3 件事,代码颜色正确,预编译错误消失:这意味着引用被识别。

  3. 当我构建解决方案时,Windows 服务项目出现编译错误:找不到任何引用的程序集。

这里发生了什么? x86 配置是否导致“找不到类型或命名空间名称‘log4net’(您是否缺少 using 指令或程序集引用?)”错误?

我强制 Windows 服务项目使用任何 CPU 配置。我仔细检查了每一个参考,它们是正确的。我仍然无法引用任何内容。

系统规格:

  • Windows 7 x64 SP1 Visual Studio 2010
  • 终极

【问题讨论】:

    标签: .net visual-studio-2010 reference project-structure


    【解决方案1】:

    嗯,你已经找到了答案。 Log4net 依赖于 System.Web.dll,这是一个在客户端配置文件中不可用的程序集。这种依赖的可能核心原因是 log4net.Appender.AspNetTraceAppender 类,它使用 HttpContext 类并且需要 System.Web。

    现在,您需要从库的文档中或通过艰难的方式找到它来了解这些内容。构建会产生警告但它只是警告而不是错误,很容易错过:

    C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360,9):警告 MSB3253:引用的程序集“C:\projects\WindowsFormsApplication2\ClassLibrary1\bin\Debug\ClassLibrary1 .dll”无法解析,因为它依赖于“System.Web,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”,它不在当前目标框架“.NETFramework,Version=v4.0,配置文件=客户”。请删除对不在目标框架中的程序集的引用或考虑重新定位您的项目。

    在代码中尝试引用包含 log4net 引用的程序集中的类的任何语句中出现错误。

    C:\projects\WindowsFormsApplication2\WindowsFormsApplication2\Form1.cs(12,9):错误 CS0246:找不到类型或命名空间名称“ClassLibrary1”(您是否缺少 using 指令或程序集引用?)

    如果您在编写代码时不逐步构建,您也不会错过任何内容,并且可能会出现很多错误。您专注于错误并且不会意识到警告是错误的真正来源。另一个令人讨厌的陷阱是 IntelliSense 一开始很高兴,它确实正确地解析了程序集引用。有一些证据表明警告并不总是产生,纯粹是因为许多程序员似乎错过了它。不过,我还没有找到这种情况。没有把握。

    【讨论】:

    • 这很困难......在这种情况下,警告是真正的指标。从.NET Framework 4 Client Profile 更改为.NET Framework 4 解决了这个问题。
    【解决方案2】:

    在失去了几把头发后,我找到了this Stackoverflow 的答案,它解决了这个问题。 但是为什么 Visual Studio 会添加一个以 x86 作为目标平台并以 .Net Framework 4 Client Profile 作为目标框架的 Windows 服务呢?

    【讨论】:

      【解决方案3】:

      检查解决方案是否已构建。您可以通过右键单击解决方案 > 属性 > 配置属性来执行此操作。确保所有解决方案都已构建

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-05
        • 2012-07-08
        • 2019-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多