gpt4 book ai didi

c# - 卷影复制,以及从任意文件夹加载的混合 C# 和 C++ DLL

转载 作者:太空狗 更新时间:2023-10-29 23:10:24 25 4
gpt4 key购买 nike

我有一个 VS 2005 C# 项目,它使用一个特殊的插件文件夹来加载额外的 DLL(用作 Assets 转换过程中的节点)。

我在这个文件夹中混合了 C# 和 C++ DLL。

我遇到的问题是,当启用卷影复制时,C++ DLL 拒绝使用 Assembly.LoadFrom 加载。我尝试创建自定义应用程序域并使用加载,但这也失败了。

最后,我尝试将 DLL 读取为 byte[] 数据并对其使用 Load - 同样,只有 C# DLL 会以这种方式工作,并出现错误“附加信息:无法验证的代码未能通过策略检查。(HRESULT 异常: 0x80131402)”。

网络上的一篇文章提示我在构建特定 DLL 时尝试使用/clr:safe,但随后由于 Microsoft 代码中的数千个错误而导致构建失败...(显然)

在禁用卷影复制的情况下,LoadFrom 对所有 DLL 都能正常工作。该应用程序本身是 Maya 的插件,它曾经适用于 Maya 8.5,但在 2008/2009 中失败(如果启用了影子复制)。

我们真的更愿意使用卷影复制,因为它可以防止应用程序运行时 DLL 文件锁定(插件文件夹存储在 Perforce 可以在应用程序运行时更新的位置)。

关于如何说服 Shadow Copying 使用自定义文件夹和 C#/C++ DLL 的混合而没有这些问题,有什么想法吗?

最佳答案

听起来像是信任问题。尝试获取 Fusion 日志(参见 this blog post )。您的 C++ DLL 无法验证,因为它们不是使用 /clr:safe 编译的,因此它们只能作为完全信任加载。大概是在卷影复制时,下载缓存位置没有完全信任。

如果这是一个仅限开发的问题,运行 caspol -s 可能会让您启动并运行。

关于c# - 卷影复制,以及从任意文件夹加载的混合 C# 和 C++ DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/272030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com