类目库在针对.NET 4 Client Profile时中断

时间:2012-11-26 22:31:29

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

我在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 Client Profile的。事实上,上面粘贴的错误是log4net,当然不依赖于System.Web

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

我将丢弃的一条可能无用的信息:当我创建我的类库项目时,它会自动定位到.NET 4.5,之后我将其更改为.NET 4 Client Profile。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

发现问题。

我在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>

现在它有效。

答案 2 :(得分:0)

对我而言,这是有效的:在解决方案资源管理器中右键单击您的项目 - &gt;卸载项目 - &gt;然后右键单击该项目并编辑yourprojectname.csproj删除节点TargetFrameworkProfile中的“Client”值,所以它应如下所示:

<TargetFrameworkProfile></TargetFrameworkProfile>

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