使用C#项目中的DLL,在运行时获取TryLoadException

时间:2010-10-03 02:52:16

标签: c# visual-studio visual-studio-2010 dll dllimport

我有一个我在Visual Studio中创建的类/库项目,一个SS命名空间中的Spreadsheet。接下来,我创建了一个Windows窗体应用程序,然后我添加了DLL,并将它放在我的资源菜单中,它构建得很好,但是,在运行时,我得到一个TryLoadException,文档似乎说的意思是它不在集合中,但为什么它编译得很好?此外,我怀疑这是我的DLL的问题,因为我的朋友制作了一个类似的DLL(匹配相同的API,但构建不同,它适用于他的Windows窗体应用程序),我仍然得到TryLoadException

这是我遵循的程序。

  1. 创建(并实施)电子表格类。
  2. 为电子表格gui创建新的解决方案和项目。
  3. 在项目中,右键单击并添加一个现有项目,在第一个解决方案bin / debug(或bin / release,我试过两个)文件夹中找到dll。还将dll添加到引用中。
  4. 在执行代码的某处,添加以下行:

    Spreadsheet ss = new Spreadsheet(); //他们已经在同一名称空间

  5. 构建,请注意没有错误。

  6. 运行,执行在那里停止使用TryLoadException。

1 个答案:

答案 0 :(得分:1)

您将DLL放在资源菜单中?这看起来很奇怪。

有些事要尝试。首先,在构建之后,继续查看Windows窗体项目的Debug(或Release,无论您将要运行哪个)文件夹。你应该看到你的exe以及你需要的这个DLL。如果没有,则设置引用的方式存在问题,例如没有CopyLocal或其他内容。

其次,如果您的DLL和Windows窗体应用程序是同一解决方案中的项目,请使用项目引用而不是浏览到DLL。这会让生活变得更简单。

第三,尝试双击exe而不是按F5,看看是否会影响任何内容。 (当前目录在这两种情况下是不同的,这在尝试查找DLL时通常是相关的。)

第四,尝试删除引用,将DLL从Resources或其现在的任何奇怪位置移开,并再次添加引用。看看事情是否表现得更好。