假设我的项目结构。
App cs project ===> App.dll
XWrapper C ++项目===> XWrapper.dll(clr:safe)
x.dll ===> x.dll(只是复制)
在Unsafe.cpp中有一个名为XWrapper的类,它使用 LoadLibraryEx
调用x.dll在app.cs中有一个函数
private unsafe bool callX(){
XWrapper x = new XWrapper();
....
}
=============================================== =======================
机器A已安装VS2015并构建项目。我可以成功调试到不安全的函数。
同时,当我将整个构建复制到机器B时,无法执行不安全的功能。
尝试调试函数时,抛出 System.IO.FileNotFoundException 异常,说无法加载文件或程序集'XWrapper.DLL'或其依赖项之一。< / strong>
然后我通过FUSLOGVW.exe检查日志,没有任何错误。
LOG: Assembly Name is: XWrapper, Version=1.0.5984.17726, Culture=neutral, PublicKeyToken=6a8f2c98accc9ccf
LOG: Binding succeeds. Returns assembly from C:\Users\admin\AppData\Local\assembly\dl3\9AYAC4D8.B5T\ZR9BQ7XN.RBG\4f3d4e8e\80c69e0a_3ab2d101\XWrapper.dll.
LOG: Assembly is loaded in default load context.
如果我在机器B中编译这个项目,clr在机器B上工作,而在将构建移动到机器A时不适用于机器A.
请注意,app都在window7 x86运行时中运行。
看来clr(不安全的功能)只适用于构建它的机器,任何想法?我该如何进行正确的配置来解决这个问题?