我正在尝试将第三方库添加到使用C#编写的Outlook 2013添加中。它由2个组件组成:.Net包装器和C ++ DLL本身。
我在添加项目中引用了.net包装器,并在构建资源上添加了C ++ lib作为副本。
显然,Office运行时将插件引用的每个.Net库放在一个单独的文件夹中,不包括C ++ lib,因为它没有被引用。并且插件无法找到C ++ lib,因为它应该与执行的dll在同一个文件夹中。
示例插件的dll位置:
C:\Users\UserName\AppData\Local\assembly\dl3\TMGBBYEC.3JC\QE21JQR6.YRW\4a3206fe\4acfc661_ccc6cf01\SomeLibName.dll
任何想法如何解决这个问题?
答案 0 :(得分:1)
尝试使用以下内容来计算dll位置。
string codebase = Assembly.GetExecutingAssembly().CodeBase;
var vUri = new UriBuilder(codebase);
string vPath = Uri.UnescapeDataString(vUri.Path + vUri.Fragment);
string directory = Path.GetDirectoryName(vPath);
if (!string.IsNullOrEmpty(vUri.Host)) directory = @"\\" + vUri.Host + directory;