使用C#项目中的DLL,在运行时获取TryLoadException
我在VisualStudio中创建了一个类/库项目,它是SS名称空间中的一个电子表格。接下来,我创建了一个windows窗体应用程序,然后添加了DLL,并将其放在我的“资源”菜单中,它构建得很好,但是在运行时,我得到了一个使用C#项目中的DLL,在运行时获取TryLoadException,c#,visual-studio,visual-studio-2010,dll,dllimport,C#,Visual Studio,Visual Studio 2010,Dll,Dllimport,我在VisualStudio中创建了一个类/库项目,它是SS名称空间中的一个电子表格。接下来,我创建了一个windows窗体应用程序,然后添加了DLL,并将其放在我的“资源”菜单中,它构建得很好,但是在运行时,我得到了一个TryLoadException,文档似乎说它不在程序集中,但为什么它编译得很好呢?此外,我怀疑这是我的DLL的问题,因为我的朋友制作了一个类似的DLL(匹配相同的API,但构建方式不同,并且适用于他的Windows窗体应用程序),我仍然得到TryLoadException 这
TryLoadException
,文档似乎说它不在程序集中,但为什么它编译得很好呢?此外,我怀疑这是我的DLL的问题,因为我的朋友制作了一个类似的DLL(匹配相同的API,但构建方式不同,并且适用于他的Windows窗体应用程序),我仍然得到TryLoadException
这是我遵循的程序
你把DLL放在你的资源菜单里了吗?这似乎真的很奇怪 有些事情需要尝试。首先,在构建之后,转到Windows窗体项目的调试(或发布,无论您要运行哪个版本)文件夹中查看。你应该在那里看到你的exe,还有你需要的这个DLL。如果没有,则设置引用的方式存在问题,例如没有CopyLocal或其他内容 其次,如果DLL和Windows窗体应用程序是同一解决方案中的项目,请使用项目引用,而不是浏览DLL。这将使生活变得简单一点 第三,尝试双击exe而不是按F5,看看这是否会影响任何内容。(在这两种情况下,当前目录是不同的,这在尝试查找DLL时通常是相关的。)
第四,尝试删除引用,将DLL从资源或任何奇怪的地方拿走,然后再次添加引用。看看情况是否会更好。右键单击引用并检查“复制本地”属性——它应该是真的。是的,复制本地属性是真的。不,我不是这个意思。我将dll本身添加到项目的根目录中,但我将其放在引用列表中,以便链接到它。无论如何,谢谢你。出于某种神奇的原因,它今天开始工作。我仍然不能完全确定发生了什么,但现在它起作用了,谢谢。