簡體   English   中英

在F#解決方案中找不到互操作程序集

[英]Interop assembly not found in F# solution

F#newbie在這里花了很多時間來嘗試使用MSDN F#教程中的一段簡單代碼來解決錯誤。

#r "Microsoft.Office.Interop.Excel.dll" 
// fails with invalid/not found errors

#r "Microsoft.Office.Interop.Excel" // works like a charm.

任何F#大師都知道為什么?

"Microsoft.Office.Interop.Excel.dll"文件的名稱(由於.dll后綴而推斷)。 提供文件名時,# #r將在文件系統中查找該文件。 由於您沒有提供路徑,因此它將查看您當前的工作目錄。 最有可能的是, "Microsoft.Office.Interop.Excel.dll"不在您的工作目錄中。 這解釋了第一個例子失敗的原因。

另一方面, "Microsoft.Office.Interop.Excel"被推斷為程序集的名稱(因為沒有文件擴展名)。 程序集是庫,通常分布在.dll文件中。 但他們沒有必要; 例如,它們可以在運行時動態發出。 另外, .dll文件在技術上可以包含多個程序集,盡管我從未在野外看到過這種情況。 最常見的情況是.dll文件包含單個程序集,並且文件名對應於程序集的名稱。

當您請求加載程序集時,.NET程序集加載程序(稱為Fusion )開始查找具有所請求標識的程序集 它將開始查看全局程序集緩存 ,我的猜測是它在那里找到"Microsoft.Office.Interop.Excel"程序集。 這解釋了為什么第二個例子成功了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM