Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法强制转换程序集_C#_Visual Studio 2005_Assemblies - Fatal编程技术网

C# 无法强制转换程序集

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

下面是我加载dll文件并以xml格式写入该文件信息的代码:

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不是可以转换的东西。