Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.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# 无法从CLI/C++控制台应用程序加载文件或程序集log4net_C#_C++_C++ Cli_Log4net_Clr - Fatal编程技术网

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

C# 无法从CLI/C++控制台应用程序加载文件或程序集log4net,c#,c++,c++-cli,log4net,clr,C#,C++,C++ Cli,Log4net,Clr,我有一个C语言的项目,它使用“log4net”。必须从C++项目中使用这个C DLL,这是主程序。因此,我在CLI/C++中实现了一个包装器项目,但是这个log4net.dll出现了一个错误 当我从CLR控制台应用程序项目调用C dll时,我遇到了有关“log4net”的问题。我知道我的C项目在log4net中运行良好,因为我使用C中的控制台应用程序对其进行了测试,做了与包装器相同的事情。在这两个项目中,C ans CLR中的控制台应用程序我复制了.exe进程文件夹中的log4net.dll 作

我有一个C语言的项目,它使用“log4net”。必须从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:“无法加载文件或程序集”log4net,版本=1.2.15.0,区域性=中性,PublicKeyToken=669e0ddf0bb1aa2a“或其依赖项之一。定位的程序集清单定义与程序集引用不匹配。来自HRESULT的异常:0x8013100'

我意识到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++项目,我没有这样的文件。我在另一个例子中看到,我需要为我的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>

Version=1.2.15.0是否与绑定重定向中提到的版本相同?我不知道版本1.2.15.0从何而来。因为在我的C项目中,我安装了log4net2.0.8.0。如果我用一个C控制台应用程序测试它,它就可以正常工作。。。当我尝试从CLR控制台应用程序项目中执行相同操作时,问题就出现了。我没有绑定重定向的app.config。VS没有创建它。项目>添加新项>实用程序节点>配置文件app.config