0

我创建了一个单词加载项,它使用我的一个 DLL。当我在 Visual Studio(调试或发布模式)中运行该应用程序时,该应用程序运行良好,但是当我尝试自行启动 Word(并且加载项仍然存在)然后继续触发加载的方法时DLL,我得到一个 DLL 错误,如下图所示。我很确定该问题与 x86/x64 兼容性问题无关,因为我已将所有项目的平台目标设置为 x86。(用于测试的 Word 版本也是 32 位的)。任何关于问题可能是什么的想法将不胜感激,在此先感谢!

在此处输入图像描述

4

1 回答 1

4

因此,经过一天的谷歌搜索,我找到了解决方案。事实证明,Word(以及一般的 Office 程序)将您的 dll 移动到单独的临时目录中 - 位于:

$User\AppData\Local\assembly\dl3

我的 dll 依赖于同一目录中的其他资源,但是因为它被单独移动到这个临时目录中,所以无法加载 dll。为了解决这个问题,我从安装它的目录中手动加载了 dll:

System.Reflection.Assembly.LoadFile(string path)

您可以使用以下代码行获取安装它的目录:

System.Reflection.Assembly assemblyInfo = System.Reflection.Assembly.GetExecutingAssembly();

//Location is where the assembly is run from 
string assemblyLocation = assemblyInfo.Location;

//CodeBase is the location of the ClickOnce deployment files
Uri uriCodeBase = new Uri(assemblyInfo.CodeBase);
string ClickOnceLocation = Path.GetDirectoryName(uriCodeBase.LocalPath.ToString());
于 2013-07-12T09:03:16.153 回答