我在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。
答案 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>
重新加载项目然后重建,这应该可以解决问题