无法从 CLI/C++ 控制台应用程序加载文件或程序集 log4net

Could not load file or assembly log4net from CLI/C++ console aplication

我有一个使用 'log4net' 的 C# 项目。我必须使用 C++ 项目中的这个 C# dll,它是主程序。所以,我在 CLI/C++ 中实现了一个包装器项目,但是我收到了这个 log4net.dll.

的错误

当我从 CLR 控制台应用程序项目调用 C# dll 时,我遇到了关于 'log4net' 的问题。我知道我的 C# 项目与 log4net 一起工作得很好,因为我用 C# 中的控制台应用程序测试了它,做了我想作为包装器做的同样的事情。在这两个项目中(C# ans CLR 中的控制台应用程序)我在 .exe 进程文件夹中复制了 log4net.dll。

作为测试示例,了解我的意思...对于 C# 控制台应用程序,我有以下测试代码:

static void Main(string[] args)
    {
        GeneratorStatus genStatus = new GeneratorStatus();
        string log = genStatus.GetGenStatusMessage();
    }

对于 CLI/C++ 控制台应用程序,我有以下代码:

int main(array<System::String ^> ^args){
GeneratorStatus^ genStatus = gcnew GeneratorStatus();
String^ log = genStatus->GetGenStatusMessage();}

在最后一种情况下,我得到了这个错误:

System.IO.FileLoadException: 'Could not load file or assembly 'log4net, Version=1.2.15.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)'

我意识到 C# 控制台应用程序项目有一个 App.config 文件,其中指定了以下关于 log4net 的内容:

<dependentAssembly>
    <assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-2.0.8.0" newVersion="2.0.8.0"/>
</dependentAssembly>

CLI/C++ 项目没有这样的文件。我在另一个 post 中看到我需要为我的 C++ 应用程序定义一个 app.config 文件并在其中包含 log4net 配置。但是,我不知道该怎么做。你可以帮帮我吗?或者如果您有其他提示...

最后的问题是 visual studio 没有为具有绑定重定向信息的 CLR 控制台应用程序项目创建 .exe.config 文件。在 C# 中确实有控制台应用程序。

因此,我创建了一个 ConsoleApplication。exe.config 作为 VS 为 C# 控制台项目创建的应用程序:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
   <dependentAssembly>
    <assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-2.0.8.0" newVersion="2.0.8.0"/>
   </dependentAssembly>
  </assemblyBinding>
 </runtime>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/></startup></configuration>