2014-09-02 52 views
1

我想添加第三方库到我的Outlook 2013添加写在C#中。它由2个组件组成:.Net包装器和C++ dll本身。VSTO Outlook 2013第三方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 

任何想法如何解决这一问题?

回答

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; 
+0

谢谢我在装配上使用位置属性,可能正在接收GAC的位置。在现实中,插件是从bin/debug引用的,检查安装的版本。 – v00d00 2014-09-02 20:19:02

+0

并且安装版本也针对安装文件夹。好吧,很显然,C++ lib是痛苦的源泉,因为我们已经成功地添加了Sqlite本地库很好... – v00d00 2014-09-02 20:29:01