我是一名Java开发人员,刚刚开始学习C#来开发一个项目。我很高兴看到我习惯使用的许多Java框架(log4j,ant,hibernate等)都有.net版本(log4net,nant,nhibernate)。
我刚刚创建了一个项目,并尝试将log4net程序集引用放入其中,但是我收到了以下警告(后面跟着4个错误,告知无法识别log4net名称空间和类):
引用的程序集“log4net” 无法解决,因为它有一个 依赖于“System.Web, 版本= 4.0.0.0,文化=中立, PublicKeyToken = b03f5f7f11d50a3a“哪个 不在目前的目标 骨架 “.NETFramework,版本= V4.0,外形=客户”。 请删除对程序集的引用 不在目标框架或 考虑重新定位你的项目。
我添加了对System.Web.ApplicationServices
和System.Web.Services
的引用,但它不起作用。任何有关解决此依赖性问题的帮助都将非常感激。
由于
答案 0 :(得分:28)
<强>更新强>:
如果您仍然遇到此错误,那么您使用的是log4net的过时版本,您应该考虑更新到current version,这不需要完整的.NET 4.0框架。感谢@Philippe在评论中指出这一点。
您的项目引用了.NET 4.0 客户端配置文件,其中不包含System.Web;你实际上需要引用完整的框架。
请参阅MSDN上的How To: Target a Specific .NET Framework Version or Profile了解路线。
- 在Visual Studio中,打开要更改的项目。
- 在“解决方案资源管理器”中右键单击该项目,然后单击“属性”。
在项目设计器中,找到目标框架列表,如下所示。
- 对于Visual Basic项目,单击“编译”选项卡,然后单击“确定” 高级编译选项。目标 框架列表在Advanced中 “编译器设置”对话框。
- 对于Visual C#项目,目标框架列表位于 项目的应用程序选项卡 设计师。有关更多信息,请参阅 应用页面,项目设计师 (C#)。
- 对于Visual F#项目,目标框架列表位于 项目的应用程序选项卡 设计器。
- 醇>
在“目标框架”列表中,选择.NET Framework版本或 您想要的个人资料。当你点击 好的,项目卸载然后 重新加载集成开发 环境(IDE)。该项目现在 目标是.NET Framework版本 你刚刚选择了。
答案 1 :(得分:6)
将项目设置为“.Net 4.0 Framework”,而不是项目属性对话框中的“.Net 4.0 Framework Client Profile”。
答案 2 :(得分:1)
只是小更新。 这个问题已经记录在差不多3年前了,并且在本月修复了。所以log4net的下一个版本(在1.2.10之后)应该可以使用客户端配置文件框架。
答案 3 :(得分:1)
如果您在1.2.11版中遇到此错误,并且您不想更改项目的框架,只需安装客户端配置文件的版本即可。它位于二进制分发中的net-cp
文件夹中。
答案 4 :(得分:0)
作为未来用户的参考:
不要忘记 安装 您定位的框架! (我,我自己,以为因为所有的文件夹(v4.0x,v2.0X等)都在那里我有所有的框架。不! 事实证明我只在我的系统上安装了.NET 4.0 客户端配置文件,并且找不到System.Web,即使正确的框架是针对性的。
无论如何,请在此处下载您所需的.net框架: .NET Frameworks Microsoft Downloads