1

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

4

3 回答 3

1

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

于 2012-11-26T22:35:00.413 回答
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>

现在它可以工作了。

于 2012-11-26T22:45:53.567 回答
0

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

<TargetFrameworkProfile></TargetFrameworkProfile>

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

于 2015-10-08T10:57:32.660 回答