C# 无法强制转换程序集
下面是我加载dll文件并以xml格式写入该文件信息的代码:C# 无法强制转换程序集,c#,visual-studio-2005,assemblies,C#,Visual Studio 2005,Assemblies,下面是我加载dll文件并以xml格式写入该文件信息的代码: MyOptions ass = MyOptionsList[MyOptionsList.Count - 1]; AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; StringWriter sw = new StringWriter(); XmlSerializer serializer = new XmlSerializer(ass.Get
MyOptions ass = MyOptionsList[MyOptionsList.Count - 1];
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
StringWriter sw = new StringWriter();
XmlSerializer serializer = new XmlSerializer(ass.GetType(),
new Type[] { typeof(MyOptions) });
serializer.Serialize(sw, ass);
//more code writing in an xml file
AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomain_AssemblyResolve;
Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
return Assembly.LoadFrom(correctPath + ".dll");
}
问题发生在行serializer.Serialize(sw,ass)中代码>。内部异常表示我不能从一个dll强制转换到另一个dll。两个dll文件具有相同的名称。一个在正确路径上,另一个在其他路径上。如何解决这个问题
MyOptions是一个类库项目,我正在加载的dll正从中扩展。我刚刚尝试了下面的方法,没有问题,我想你的问题一定在别处
public class MyOptions
{
public int n;
}
static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
return Assembly.LoadFrom(@"C:\windwos\test.dll");
}
static void Main(string[] args)
{
MyOptions ass = new MyOptions();
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
StringWriter sw = new StringWriter();
XmlSerializer serializer = new XmlSerializer(ass.GetType(), new Type[] { typeof(MyOptions) });
serializer.Serialize(sw, ass);
//more code writing in an xml file
AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomain_AssemblyResolve;
}
请注意,没有调用事件代码。您的代码试图实现什么?@GregC加载一个dll文件,并用xml写入有关该文件的信息。这部分代码没有解释如何将dll放入ass。确切的异常消息和堆栈跟踪是什么?@Srcee您没有解释MyOptions实际上是什么。它显然是某种类型的类,但这就是我所能想到的。此外,不会有异常错误消息说您不能从一个DLL转换到另一个DLL,因为DLL不是可以转换的东西。