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