当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《在F#解决方案中找不到互操作程序集》经验,为你挑选了1个好方法。

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#大师都知道为什么?



1> Mark Seemann..:

"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"那里找到了程序集.这解释了为什么第二个例子成功了.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有