VB.net引用是否嵌入在已编译的代码中?

时间:2014-11-06 17:56:19

标签: vb.net

我正在使用VS2010在VB.Net中编写商业应用程序。我的应用程序需要访问MySQL数据库。所以我在项目的“参考”部分中引用了MySQL.Data.dll。出于许可原因,我想确保此dll文件未嵌入到我的应用程序中。根据我的阅读,如果我将“copy local”属性设置为False,则不会复制该文件,我需要将其专门复制到我的bin目录。所以我把它设置为False并构建我的项目。当我运行它时,即使dll不在bin目录中,我仍然可以连接到MySQL数据库。对我来说,这表明它正在使用构建进行编译。但是,该引用指向我的硬盘驱动器上原始MySQL.data.dll所在的位置。程序运行时它还能在那里找到吗?

我怎样才能确保它没有被编译?感谢。

顺便说一句,它不在GAC中(我使用gacutil.exe检查)

1 个答案:

答案 0 :(得分:2)

如果您指的是将实际装配嵌入您的装配中,那么它就不会。它可以做到,但它并不是开箱即用的。

当需要加载引用时,应用程序会查看许多引用位置。

  • GAC
  • 应用程序旁边(也许是消耗程序集)
  • 应用程序旁边的x64和x86文件夹(也可能是消耗程序集)
  • app.config / web.config中为引用的程序集指定的任何路径。

请记住,仅仅因为您的应用程序启动了,并不意味着它找到了所有引用。它很可能尚未加载所有这些,因为它只会在需要时才会加载它。