无法从另一台计算机加载DLL

时间:2012-05-10 11:11:34

标签: c# .net

我在从另一台计算机加载dll时遇到问题。它从我的工作站加载非常好,但当我尝试从另一个没有安装Visual Studio的系统测试它时,我得到以下异常:

  

日期 - 2012年5月10日12:01:48.0725000 - 调用目标抛出了异常。       日期 - 2012年5月10日12:01:48.0881250 - System.IO.FileNotFoundException:无法加载文件或程序集'System.Xml.Linq,Version = 3.5.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'或其依赖项之一。该系统找不到指定的文件。       文件名:'System.Xml.Linq,Version = 3.5.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'       在ZENNLNGLIB.Process.ReadConfigFile()       在ZENNLNGLIB.Process.ProcessFile(String fileName)

     

程序集管理器从以下位置加载:C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ mscorwks.dll       在可执行文件C:\ Documents and Settings \ Administrator \ Desktop \ NLNG.Encryption \ NLNG.Encryption \ bin \ Debug \ NLNG.Encryption.exe下运行       ---详细的错误日志如下。

     

===预绑定状态信息===       日志:用户= WS001ITS106 \ Administrator       日志:DisplayName = System.Xml.Linq,Version = 3.5.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089       (完全指定的)       日志:Appbase = file:/// C:/ Documents and Settings / Administrator / Desktop / NLNG.Encryption / NLNG.Encryption / bin / Debug /       日志:初始PrivatePath = NULL       调用程序集:ZENNLNGLIB,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null。       ===       日志:此绑定在LoadFrom加载上下文中开始。       警告:不会在LoadFrom上下文中探测本机映像。原生图像只能在默认加载上下文中进行探测,就像使用Assembly.Load()一样。       日志:找不到应用程序配置文件。       日志:使用C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ config \ machine.config中的计算机配置文件。       日志:政策后参考:System.Xml.Linq,Version = 3.5.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089       日志:尝试下载新的URL文件:/// C:/ Documents and Settings / Administrator / Desktop / NLNG.Encryption / NLNG.Encryption / bin / Debug / System.Xml.Linq.DL L.       日志:尝试下载新的URL文件:/// C:/ Documents and Settings / Administrator / Desktop / NLNG.Encryption / NLNG.Encryption / bin / Debug / System.Xml.Linq / Sy stem.Xml.Linq.DLL。       日志:尝试下载新的URL文件:/// C:/ Documents and Settings / Administrator / Desktop / NLNG.Encryption / NLNG.Encryption / bin / Debug / System.Xml.Linq.EXE。       日志:尝试下载新的URL文件:/// C:/ Documents and Settings / Administrator / Desktop / NLNG.Encryption / NLNG.Encryption / bin / Debug / System.Xml.Linq / System.Xml.Linq.EXE。       日志:尝试下载新的URL文件:/// C:/zennlnglib/System.Xml.Linq.DLL。       日志:尝试下载新的URL文件:/// C:/zennlnglib/System.Xml.Linq/System.Xml.Linq.DLL。       日志:尝试下载新的URL文件:/// C:/zennlnglib/System.Xml.Linq.EXE。       日志:尝试下载新的URL文件:/// C:/zennlnglib/System.Xml.Linq/System.Xml.Linq.EXE。

这就是我加载我的dll的方式:

Assembly u = Assembly.LoadFrom(@"C:\test\test.dll");

    Type t = u.GetType("Test.Process");
    MethodInfo m = t.GetMethod("ProcessFile");

    try
    {
        object[] myparam = new object[1];
        myparam[0] = @"C:\test\testFile.csv";

        result = (string)m.Invoke(null, myparam);

        Console.WriteLine(result);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message.ToString());
        Console.WriteLine(ex.InnerException.ToString());
        System.Threading.Thread.Sleep(100000);
    }

1 个答案:

答案 0 :(得分:3)

  

System.IO.FileNotFoundException:无法加载文件或程序集'System.Xml.Linq,Version = 3.5.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'或其依赖项之一。系统找不到指定的文件

漂亮地说会发生什么。检查是否在发生错误的其他计算机上安装了.NET Framework的正确版本(3.5)。

如果您尝试从下面打印的位置加载它,请在

中查找System.Xml.Linq dll
  

C:/zennlnglib/System.Xml.Linq.DLL

我想

  

C:/ Documents and Settings / Administrator / Desktop / NLNG.Encryption / NLNG.Encryption / bin / Debug /

在目标计算机上不存在。