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

时间:2016-07-28 13:34:18

标签: c# c++ log4net mstest

未处理的类型' System.IO.FileNotFoundException'发生在LoggerLibrary.dll

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

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

1 个答案:

答案 0 :(得分:1)

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

然后,您可以将所需的类公开为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。