【问题标题】:Class library breaks when targeted to .NET 4 Client Profile面向 .NET 4 客户端配置文件时类库中断
【发布时间】:2012-11-14 11:41:37
【问题描述】:

我在 Visual Studio 2012 中有一个 (C#) .NET 4 Client Profile 项目的解决方案。今天我尝试添加另一个项目,同样针对 .NET 4 Client Profile。我的新项目需要在我的解决方案中引用许多其他类库,但是对于每个出现此错误的类库都没有这样做:

当前目标框架“.NETFramework,Version=v4.0,Profile=Client”不包括引用程序集“log4net”的“System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”取决于。这导致引用的程序集无法解析。要解决此问题,请 (1) 更改此项目的目标框架,或 (2) 从项目中删除引用的程序集。

我引用的所有项目都不依赖于System.Web,它们都针对 .NET 4 客户端配置文件。事实上,上面粘贴的错误是针对log4net,它肯定不依赖于System.Web

我已经多次清理和重建我的整个解决方案,并且重新启动了 Visual Studio,但没有任何效果。关于如何构建我的项目的任何想法?

我将扔掉一条可能无用的信息:当我创建我的类库项目时,它自动以 .NET 4.5 为目标,后来我将其更改为 .NET 4 Client Profile。

【问题讨论】:

    标签: .net visual-studio-2012 .net-assembly class-library


    【解决方案1】:

    对我来说这是有效的:在解决方案资源管理器中右键单击您的项目 -> 卸载项目 -> 然后右键单击该项目并编辑 yourprojectname.csproj 删除节点 TargetFrameworkProfile 中的“Client”值,因此它应该看起来像这个:

    <TargetFrameworkProfile></TargetFrameworkProfile>
    

    重新加载您的项目,然后重新构建,这应该可以解决问题

    【讨论】:

      【解决方案2】:

      找到问题了。

      我使用 NuGet 安装了 log4net,而我的项目仍然针对 .NET 4.5。这导致我的 packages.config 文件被写入:

      <?xml version="1.0" encoding="utf-8"?>
      <packages>
        <package id="log4net" version="2.0.0" targetFramework="net45" />
      </packages>
      

      在更改目标框架版本后从 NuGet 卸载并重新安装我的所有包导致 packages.config 被删除,并重写为:

      <?xml version="1.0" encoding="utf-8"?>
      <packages>
        <package id="log4net" version="2.0.0" targetFramework="net40-Client" />
      </packages>
      

      现在它可以工作了。

      【讨论】:

        【解决方案3】:

        log4net 确实依赖于 System.Web。您可能没有使用该命名空间,但是该库需要它。还有另一个question 讨论了如果您愿意自己构建项目,您可以如何删除它。您还可以更改应用程序目标,如其他 question 中所述。

        【讨论】:

        • 好的,谢谢您的信息。那么,我所有其他针对 .NET 4 Client Profile 的项目如何使用 log4net 没有问题?
        • 您确定他们的目标是 .NET 4 客户端配置文件,而不是完整的 .NET Framework 4 安装吗?除此之外,我的猜测是其他应用程序在项目中有一个 System.Web 引用。
        • 这很奇怪,但他们肯定是针对 CP,而不是引用 System.Web。但是,我确实发现了问题,尽管我并不完全理解(请参阅我的答案)。感谢您的帮助。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-11
        相关资源
        最近更新 更多