1

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

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

从以下位置加载的程序集管理器: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 --- 详细的错误日志如下。

=== 预绑定状态信息 === LOG: User = WS001ITS106\Administrator LOG: DisplayName = System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 (完全指定) LOG: Appbase = file:///C:/Documents and Settings/Administrator/Desktop/NLNG.Encryption/NLNG.Encryption/bin/Debug/ LOG:Initial PrivatePath = NULL 调用程序集:ZENNLNGLIB,Version=1.0.0.0,Culture=neutral,PublicKeyToken =空。=== LOG:此绑定在 LoadFrom 加载上下文中开始。警告:将不会在 LoadFrom 上下文中探测本机图像。本机映像只会在默认加载上下文中进行探测,例如使用 Assembly.Load()。LOG:未找到应用程序配置文件。LOG:使用 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. LOG:正在尝试下载新的 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);
    }
4

1 回答 1

3

System.IO.FileNotFoundException:无法加载文件或程序集“System.Xml.Linq,版本=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/

目标机器上不存在。

于 2012-05-10T11:14:24.203 回答