无法从 c++ 包装器加载 MS 测试中的文件或程序集'log4net'



LoggerLibrary.dll 中发生类型为"System.IO.FileNotFoundException"的未处理异常

其他信息:无法加载文件或程序集"log4net,Version=1.1.2.13.0,Culture=neutral,PublicKeyToken=669e0ddf0bb1aa2a"或其依赖项之一。系统找不到指定的文件。

从c++包装器调用的log4Net导致此异常我在测试开始时添加了对log4Net的调用,它很稳定,为什么?DLL还没有加载吗?

好消息是,您可以从log4Net站点上提供的Visual Studio源代码构建.net dllhttps://logging.apache.org/log4net/download_log4net.cgi并选择适合您需求的正确目标框架。

然后,您可以将所需的类公开为COM类,这样C++就可以使用它们。您必须向代码中添加一些接口。

这篇文章给出了一个很好的解释"如何在Visual Studio.NET或Visual Studio 2005中从本机Visual C++代码调用托管DLL"https://support.microsoft.com/en-ca/kb/828736

然后签名你的dll。

sn.exe-k MyKeyFile.SNK

替换AssemblyInfo.cs文件中的以下代码行

[assembly: ComVisible(false)]
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("")]

具有以下内容。

[assembly: ComVisible(true)] 
[assembly: AssemblyDelaySign(false)] 
[assembly: AssemblyKeyFile("..\..\MyKeyFile.SNK")]

按CTRL+SHIFT+B生成要在C++项目中使用的托管DLL。

最新更新