无法加载文件或程序集或其依赖项之一。该系统找不到指定的文件

2024-04-04

我有这样的代码

public static Type ToType(XmlSerializableType xmlSerializableType)
{
  string func = "XmlSerialzationType.ToType";
  Type type = null;
  if (xmlSerializableType != null && xmlSerializableType.Name != string.Empty)
  {
    type = Type.GetType(xmlSerializableType.Name);
    if (type == null)
    {
      // May be a user defined class
      try
      {
        Assembly assembly = Assembly.Load(xmlSerializableType.AssemblyName);
        type = assembly.GetType(xmlSerializableType.Name);
      }
      catch (Exception ex)
      {
        TestDebug.DebugTraceSevere(func, "Exception " + ex.ToString());
      }
    }
  }
  return type;
}

我有一个名为“leaf”的基类和一个名为“roundedtree”的用户定义类 什么时候 'xmlSerializableType.Name'成为用户定义的类'_rounded_tree',我第一次获得'程序集的值as _rounded_treeGOLD, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' a所以对于'type作为{Name =“_rounded_tree”FullName =“_rounded_tree”}'。但是保存后,如果我重新启动应用程序,我无法加载“程序集”的值,出现异常“无法加载文件或程序集“_rounded_treeGOLD,Version=0.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。系统找不到指定的文件。":"_rounded_treeGOLD,Version=0.0.0.0,Culture=neutral,PublicKeyToken=null' 并且返回类型变为 null 这不应该发生

对于基类“leaf”,没有问题,我将得到 xmlSerializedType.Name 作为“Root.Systemmodel.leaf”,并且“type”变为 {Name =“leaf”FullName =“Root.Systemmodel.leaf”} 程序集将是 Root.Systemmodel, Version =8.0.7.0,文化=中性,PublicKeyToken=83bd062a94e26d58 在这些情况下我该怎么办 这是一段将为用户定义的类生成程序集的代码

public Type CreateType()
      {
         string func = "ManagedClass.CreateType";

         // Create instances of AssemblyBuilder and ModuleBuilder for the new Type
         AppDomain myDomain = Thread.GetDomain();
         AssemblyName myAsmName = new AssemblyName();

         // Create the assembly name by appending the machine name to the typename.
         myAsmName.Name = this.TypeName + Environment.MachineName;
         // Define assembly that can be executed but not saved
         this.UserClassAssemblyBuilder = myDomain.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run);
         // Create dynamic module with symbol information
         this.UserClassModuleBuilder = this.UserClassAssemblyBuilder.DefineDynamicModule("userdefinedmodule", true);

UPDATE

可能我的程序集是为用户定义的类创建的,但没有保存,这可能是我第一次没有遇到任何问题的原因,一旦我关闭应用程序,我将失去看到我的代码的人

// Define assembly that can be executed but not saved
         this.UserClassAssemblyBuilder = myDomain.DefineDynamicAssembly(myAsmName,

AssemblyBuilderAccess.Run);如何克服这种情况

UPDATE这里我的数据库是xml文件。当我检查基类叶子时,我可以看到该条目是<Name>Root.Systemmodel.WindowsSystem</Name><AssemblyName>Root.Systemmodel, Version=8.0.7.0, Culture=neutral, PublicKeyToken=83bd062a94e26d58</AssemblyName>在这种情况下,如果重新启动我的应用程序没有问题,但对于用户定义的类“roundedtree”xml 条目是<Name>_rounded_tree</Name> <AssemblyName>_rounded_treeGOLD, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</AssemblyName>第一次没有问题,但如果我重新启动我的应用程序,我会遇到异常


发生这种情况是因为也许您要加载的程序集对同一目录或系统目录中不存在的另一个程序集的引用将所有程序集放在同一文件夹中 我刚刚复制粘贴了我的代码,但它很清楚

private string asmBase;
public Type[] GetAllTypeinAssembly(string assemblyName)
{
    asmBase = System.IO.Path.GetDirectoryName(assemblyName);

    AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
    System.Reflection.Assembly asm = System.Reflection.Assembly.Load(System.IO.File.ReadAllBytes(assemblyName));//domain.Load(bt) ;// 

    return asm.GetTypes();
}


private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
    //This handler is called only when the common language runtime tries to bind to the assembly and fails.

    //Retrieve the list of referenced assemblies in an array of AssemblyName.
    Assembly MyAssembly, objExecutingAssemblies;
    string strTempAssmbPath = "";
    objExecutingAssemblies = args.RequestingAssembly;
    AssemblyName[] arrReferencedAssmbNames = objExecutingAssemblies.GetReferencedAssemblies();

    //Loop through the array of referenced assembly names.
    foreach (AssemblyName strAssmbName in arrReferencedAssmbNames)
    {
        //Check for the assembly names that have raised the "AssemblyResolve" event.
        if (strAssmbName.FullName.Substring(0, strAssmbName.FullName.IndexOf(",")) == args.Name.Substring(0, args.Name.IndexOf(",")))
        {
            //Build the path of the assembly from where it has to be loaded.                
            strTempAssmbPath = asmBase + "\\" + args.Name.Substring(0, args.Name.IndexOf(",")) + ".dll";
            break;
        }

    }
    //Load the assembly from the specified path.                    
    MyAssembly = Assembly.LoadFrom(strTempAssmbPath);

    //Return the loaded assembly.
    return MyAssembly;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法加载文件或程序集或其依赖项之一。该系统找不到指定的文件 的相关文章

随机推荐

  • Excel:下拉列表取决于另一个下拉列表

    我想要在 Excel 中执行以下操作 相邻单元格中的两个下拉列表 下拉列表 1 下拉列表 1 Dropdown list 1 One Two Three 如果我在第一个单元格中选择一个 第二个单元格中的列表应包含以下选项 One 1 1 1
  • 当我运行我的 android UIAutomator 代码时,它显示错误

    当我运行我的 android UIAutomator 代码时 它显示以下错误 INSTRUMENTATION RESULT shortMsg java lang RuntimeExceptionINSTRUMENTATION RESULT
  • Objective-C instantiateViewControllerWithIdentifier 返回 nil

    一周后我打开了我的项目 看来对于所有新的UIViewController我创建于StoryBoard instantiateViewControllerWithIdentifier返回为零 一切ViewControllers项目中已经存在的
  • Flask 和 SQLAlchemy 以及 MetaData 对象

    这是我第一次使用这个环境 我愿意使用的 SQLAlchemy 部分只是允许我使用 autoload True 的表对象查询数据库的部分 我这样做是因为我的表已经存在于数据库 mysql 服务器 中 并且不是通过定义 Flask 模型创建的
  • 在单例上使用 Dispose 来清理资源

    我的问题可能更多地与语义有关 而不是与实际使用有关IDisposable 我正在致力于实现一个单例类 该类负责管理在应用程序执行期间创建的数据库实例 当应用程序关闭时 应删除该数据库 现在我正在处理这个删除Cleanup 应用程序在关闭时调
  • 如何在 Bash 脚本中从一系列 _# 文件名中选择最大数字

    我有一个包含文件的目录 heat1 conf heat2 conf heat
  • Silverlight 4 和浏览器外

    有谁知道是否可以对 app current mainwindow width 进行动画处理 以便在以编程方式调整 oob 应用程序窗口大小时获得一个带有缓动的漂亮动画 谢谢 最简单的方法是向页面添加滑块控件 滑块可以折叠 仅用于具有简单的动
  • VBA 自函数返回#VALUE!单元格出错,而在函数窗口中正确返回实际值

    我在下面写的函数是采用一个范围 我对其进行了一些条件格式设置 用于字体颜色 以及另一个用于比较颜色的单元格范围 功能是统计大范围内有多少个单元格与一个单元格范围具有相同的字体颜色 Function CountColor rng As Ran
  • 在logstash中使用docker GELF驱动程序env/labels

    Docker GELF 日志驱动程序允许env and labels日志选项 gelf 日志记录驱动程序支持 lab els 和 env 选项 它添加了额外的密钥extra字段 以下划线 为前缀 ref https docs docker
  • 分配给 Rails ActiveRecord 中的布尔字段时,值如何转换?

    我的问题的简短版本 在 Rails ActiveRecord 中 如果我有一个布尔字段并且我给它分配类似 abc or 2 然后它立即转换为false 价值1被投射到true and nil仍然是nil 为什么会这样呢 在哪里可以找到解释此
  • PHPUnit:存根多个接口

    我正在掌握 PHPUnit 到目前为止发现它非常容易使用 但我遇到了一个给我带来困难的测试用例 我正在针对一组预期对象实现的接口 一些是 PHP 的 一些是自制的 编写代码 并且 SUT 需要一个输入对象来实现多个接口 例如 class M
  • 计算两个模型的梯度

    假设我们正在构建一个基本的 CNN 来识别猫和狗的图片 二元分类器 此类 CNN 的示例如下 model Sequential Conv2D 32 3 3 input shape Activation relu MaxPooling2D p
  • 在JetPack Compose中手动重构所有AndroidView

    在我的项目中 我使用 JetPack Compose 和 AndroidView 来使用 XML 视图 Composable fun MyComposable message String AndroidView factory conte
  • MSBuild /m:4 失败,因为它构建了同一个项目两次

    我的团队有一个大型解决方案 约 500 个 csproj 我们使用 VS2012 并使用 TFS Build 进行构建 TFS Build 使用 MSBuild 4 目前我们串行构建 但我们希望并行构建 使用msbuild maxcpuco
  • Maven 不会使用公钥来部署

    我正在使用 SSH 将我的 Java 工件部署到服务器 我设置了密钥 以便可以交互式 SSH 到服务器而无需密码 但是当我尝试运行 mvn deploy or mvn release perform 命令 它挂起 我认为是密码提示 My m
  • iOS RestKit 无法将本地实体保存到数据库

    我正在使用 RestKit 0 20 解析 JSON 数据并保存到数据库 这里有一个映射实体 SchoolClass 它由 RestKit 处理并保存得很好 我有另一个名为 MyClass 的实体 它存储我选择的类 这仅在设备上是本地的 这
  • 用CSS隐藏占位符

    我正在使用响应式主题 我在这里面临输入表单问题 在桌面视图中 输入不会有占位符 但有标签 但是 当涉及到移动视图时 我将隐藏此输入标签并使用占位符更改此标签
  • 如何使用 C# 唯一标识 USB 密钥?

    我希望能够检测到 USB 密钥何时插入 此外 如果我能够区分 USB 密钥 A 和 USB 密钥 B 那么我的状态就更好了 最后 如果我可以使用某种硬件序列号 MAC 地址或其他任何方式唯一地识别密钥 那么我就处于最佳状态 基本上 我正在考
  • iOS QuickType 栏:添加自定义建议

    我想根据我的应用程序的用户添加自定义建议 例如 假设它是游戏 然后根据他与之交互的用户 理想情况下 这些建议应在输入字段仍为空时显示 知道该怎么做吗 None
  • 无法加载文件或程序集或其依赖项之一。该系统找不到指定的文件

    我有这样的代码 public static Type ToType XmlSerializableType xmlSerializableType string func XmlSerialzationType ToType Type ty