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

发布于 2013-07-12 17:03:16
所以,在谷歌了一天之后,我找到了我的解决方案。事实证明,Word (以及一般的Office程序)会将您的dll移动到单独的临时目录中-该目录位于:
$User\AppData\Local\assembly\dl3我的dll依赖于同一目录中的其他资源,但因为它被单独移动到这个临时目录中,所以无法加载该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());https://stackoverflow.com/questions/17574691
复制相似问题