[英]NuGet issues when installing same package to multiple F# projects in solution
[英]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.