2014-09-02 95 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