[英]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.