Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在同一解决方案中使用2个不同的log4net程序集-每个程序集针对不同版本的.Net Framework?_C#_.net_Log4net - Fatal编程技术网

C# 如何在同一解决方案中使用2个不同的log4net程序集-每个程序集针对不同版本的.Net Framework?

C# 如何在同一解决方案中使用2个不同的log4net程序集-每个程序集针对不同版本的.Net Framework?,c#,.net,log4net,C#,.net,Log4net,我的问题与这个问题密切相关 但略有不同 虽然我们的主EXE是用.Net Framework 4.0编译的,但一些引用的程序集是为Framework v2.0编译的,我们还必须在这些程序集中添加日志记录。虽然我们选择了log4net v1.2.11(我相信是最新版本),但我们在解决方案中使用两种不同的汇编时遇到了障碍。我认为只使用针对.net 2.0的版本是安全的。首先,您不能将所有dll都放在同一个文件夹中(正如您已经发现的那样) 它解释了运行时如何尝试加载程序集 利用这些知识,您可以: (

我的问题与这个问题密切相关

但略有不同


虽然我们的主EXE是用.Net Framework 4.0编译的,但一些引用的程序集是为Framework v2.0编译的,我们还必须在这些程序集中添加日志记录。虽然我们选择了log4net v1.2.11(我相信是最新版本),但我们在解决方案中使用两种不同的汇编时遇到了障碍。

我认为只使用针对.net 2.0的版本是安全的。

首先,您不能将所有dll都放在同一个文件夹中(正如您已经发现的那样)

它解释了运行时如何尝试加载程序集

利用这些知识,您可以:

  • (如果它们兼容,我认为它们是兼容的)-例如,从旧的log4net dll到新的dll

  • 加载程序集时应使用的(例如,将其放在\Libs文件夹中,并引用该文件夹)

  • -理论上,这可以工作,因为它正在将该程序集加载到域中

一个示例取自(“具有相同名称的多个程序集”):


您可以使用此部分

<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="2.0" />
  </startup>
</configuration>

链接:


链接:

而障碍是…?@RedFilter-log4net程序集具有相同的文件名,如果复制一个程序集,则无法再找到另一个程序集-引发异常,无法加载程序集(具有完整程序集名称)。很抱歉,没有在前面详细说明“障碍”。此外,我甚至尝试将原始的“log4net.dll”重命名为“log4net_dotNet2.dll”和“log4net_dotNet4.dll”。但是CLR似乎只需要log4net.dll。也许,我对.Net缺乏一些基本的理解。我还没有研究belowI下面的“veljkoz”在回答中提供的方法,比如Assembly.LoadFrom解决方案。无论如何,您也应该能够在GAC中注册这两个项目。
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="2.0" />
  </startup>
</configuration>