我的dll文件有问题。我正在编写一个可以通过一些插件扩展的程序。我使用这些插件的接口,我可以在我的程序中阅读和使用它们。每个插件都包含一个可序列化的类,其中包含一些简单的字段。 我可以使用二进制格式化程序序列化这些类并将它们保存到磁盘。但是当我尝试反序列化我保存的文件时,我得到一个例外:“无法找到程序集”。
我在哪里注册我的dll-plugins以便我的程序可以找到程序集?
感谢您的帮助!
答案 0 :(得分:0)
确保插件dll及其所有依赖项位于同一目录(或GAC)中。
答案 1 :(得分:0)
首先,我强烈建议使用MEF作为插件,它是.NET 4.0的一部分。
另一方面,DLL从bin文件夹加载。如果你把它们放在其他任何地方都无法找到。现在,如果你仍然坚持在bin中有一个“plugin”子文件夹,那么你可以使用Assembly.LoadFile
在启动时手动加载程序集。
答案 2 :(得分:0)
看这里 http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/e5f0c371-b900-41d8-9a5b-1052739f2521
在我的情况下,执行程序集和插件程序集在同一个文件夹中,但我抛出“无法找到程序集...”。
我写了下面的课程
internal class FromLoadedAssemblyBinder : SerializationBinder
{
public override Type BindToType(string assemblyName, string typeName)
{
Assembly assembly = Assembly.Load(assemblyName);
return assembly.GetType(typeName);
}
}
并使用
_binaryFormatter = new BinaryFormatter();
_binaryFormatter.Binder = new FromLoadedAssemblyBinder();
代码很简单,但在我的项目中工作正常。