错误:无法加载log4net的装配
我期待解决这个错误:当我复制log4net.dll我的web应用程序的bin目录错误:无法加载log4net的装配
Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' or one of its dependencies. The system cannot find the file specified." This error is located in the web.config file.
,我得到一个
Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference.
这web.config文件中也会出现错误。
很容易更改版本和公钥标记以匹配文件,以便程序集正确加载。当我这样做时,我的网站完美运行,除了初始化reportViewer
对象时。然后它会在reportViewer标记处引发原始错误,而不是web.config。
我的假设是,如果我安装log4net.dll
的请求版本,我的问题将得到解决。但我不知道哪个文件或哪里可以找到它。我已经通过下载log4net 1.2.10检查了明显的情况,并尝试了下载中的每个dll。
我应该提到网站在我的开发机器上运行时没有问题,但是在发布到我的服务器时没有问题。
我在Server 2008 R2操作系统上运行一个asp.net网站,.NET 4.0,IIS 7。我已经为64位安装了Crystal Reports 13.0.1(我的机器是64位)。
我该如何解决这个问题?
编辑: 回复@ Kevian的回答,我已经改变了我的web.config文件。清单定义与程序集引用不匹配时,仍然出现错误。引发此错误的代码是:
Line 33: <CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" AutoDataBind="true"
Line 34: BestFitPage="True" ToolPanelView="None" />
尝试将此添加到您的web.config中。它主要是告诉运行时,你是好它加载相同的程序集两个版本
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="692fbea5521e1304" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.2.10.0" newVersion="1.2.10.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
你需要与你实际上在你的bin文件夹中的版本替换1.2.10.0
。
有在玩了几个问题,在这里可解析:
- 为log4net.dll冲突与Crystal Reports中使用的一个32位版本的公钥标记。为了验证是否有此问题,请在所有文件的.csproj的“692fbea5521e1304”搜索 - 如果你看到CrystalDecisions 和 log4net的,你有这个问题的引用。
- 32位版本的log4net.dll与针对64位或AnyCPU架构编译的dll发生冲突。如果你有这个问题,你会发现下面的引用。您可以通过重新配置应用程序池以32位运行并检查应用程序是否运行来验证问题 - 如果它运行,则会出现此问题。
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral,
PublicKeyToken=692fbea5521e1304, processorArchitecture=x86" >
,在64位工作对我们来说,修复是为了获得最新的log4net的。这实际上有一个新的公钥的dll,更换log4net.dll在第三方bin文件夹,和改变所有log4net.dll引用看起来像这样:
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral,
PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
从下面下载log4net.dll链接并放置在您的项目或附近的EXE。
有一个工作链接?我正在努力解决这个问题。 – 2013-10-25 19:57:59
我在我的代码有这个问题。有人使用的其中一个项目具有Log4Net版本冲突。他们使用12.2.10,我有12.2.13。所以要解决这个问题,我摆脱了我的参考,并找到他们的参考DLL。我用它来代替,它的工作完美。
查找参考Microsoft Visual Studio具有浏览器功能。你可以使用它来获取DLL。要找到这个DLL,你可以在你的项目中点击你的引用,然后点击你想要查找的引用。在这种情况下,Log4Net。它将显示依赖关系列表,另一个log4net应该靠近选定的Log4Net,并且应该有一些文本显示当前所选dll参考的位置。这是你会找到参考的地方。
MSDOS
-- Create a virtual disk
subst t: C:\Windows\assembly
-- Delete log4net x64 assembly
del t:\GAC_64\log4net\1.2.10.0__692fbea5521e1304\log4net.dll
-- remove the virtual disk
subst t: /d
对于您的问题,我建议你删除/删除此DLL在refereneces并重新安装,这里是如何正确地对VS 2013安装log4net的:
1)确保你打开在你的nuget.org NuGet包管理器实用程序的包源代码:右键项目(非解决方案),然后选择“Manague NUGet Packages ...”在左下角选择“设置”,然后选择“包管理器”,然后选择“包源代码”可用的软件包源选择“nuget.org”也检查“Machine-wid软件包源”点击“确定”
2)它会带你去管理NUGet软件包,然后在左边窗格中选择“在线”,然后搜索“log4net”它将从apache log4j移植,然后安装它。完成后你会发现它安装在你项目的参考文献中
我也附上截图。
享受!
是一个解决方案发现了什么? – tomfanning 2013-01-28 14:57:05