C# 无法从CLI/C++控制台应用程序加载文件或程序集log4net
我有一个C语言的项目,它使用“log4net”。必须从C++项目中使用这个C DLL,这是主程序。因此,我在CLI/C++中实现了一个包装器项目,但是这个log4net.dll出现了一个错误 当我从CLR控制台应用程序项目调用C dll时,我遇到了有关“log4net”的问题。我知道我的C项目在log4net中运行良好,因为我使用C中的控制台应用程序对其进行了测试,做了与包装器相同的事情。在这两个项目中,C ans CLR中的控制台应用程序我复制了.exe进程文件夹中的log4net.dll 作为一个测试例子,要知道我的意思。。。对于C控制台应用程序,我有以下测试代码: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 作
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