3

我的问题与一个密切相关

Log4Net:2 个库需要 2 个不同的版本

但略有不同。

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

4

3 回答 3

2

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

这里解释了运行时如何尝试加载程序集。

使用这些知识,您可以:

  • 重定向程序集版本(如果它们兼容,我认为它们是兼容的) - 例如从旧的 log4net dll 到新的 dll

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

  • 手动加载程序集——理论上,这可以工作,因为它将程序集加载到域中。

一个示例,取自此处(“具有相同名称的多个组件”):

<dependentAssembly>
  <assemblyIdentity name="Server" publicKeyToken="c0305c36380ba429" /> 
     <codeBase version="1.0.0.0" href="v1/Server.dll"/>
     <codeBase version="2.0.0.0" href="v2/Server.dll"/>
</dependentAssembly>
于 2012-10-09T15:15:05.763 回答
0

您可以使用此部分

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

链接:http: //msdn.microsoft.com/fr-fr/library/vstudio/bbx34a2h.aspx

链接: http: //msdn.microsoft.com/en-us/library/w4atty68 (v=vs.71).aspx

于 2012-10-09T15:18:59.247 回答
0

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

于 2012-10-09T14:39:42.270 回答