我的Windows窗体应用程序在另一台机器上运行时抛出filenotfoundexception

时间:2010-01-19 07:58:29

标签: .net filenotfoundexception

我使用vs2008创建了一个Windows窗体应用程序。当我将bin文件夹复制到另一台机器并尝试运行它时,应用程序会抛出filenotfoundexception错误。我看过项目中使用的引用文件,每个文件都指向

  • C:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727 ...
  • c:\ Program Files \ Reference Assemblies \ Microsoft \ Framework \ v3.5 ...
  • c:\ Program Files \ Common Files \ Microsoft Shared \ Visual Basic Power Packs \ 1.1 ...

我已经确认这些目录存在于导致错误的其他计算机上。 我尝试过的两台机器就是错误的

Windows XP没有安装VS2008和 安装了VS2008的Windows 7

我尝试了两台DID工作的机器

Windows XP与VS2008和 和我的开发机器Windows 7与VS2008

任何人都可以就此问题向我提供一些见解 感谢

5 个答案:

答案 0 :(得分:0)

如果您注册了所有全局程序集,那么如果您正在读取/打开一些带有异常的绝对路径的文件,请检入您的代码。

假设您有一个正在打开的文件c:\ abc.txt。此文件可能在开发人员计算机上可用,但在其他测试计算机中不可用您可能想要检查程序中的File.Open函数调用。

答案 1 :(得分:0)

找不到哪个文件,尝试捕获异常并记录未找到哪个文件的异常详细信息。 另外你说安装VS2008,应用程序工作,然后只是尝试安装VS2008可再发行的运行时库。它需要webbrowser和其他api。

答案 2 :(得分:0)

也许可以使用

Dim rootPath As String = Server.MapPath(“〜”)

和相对路径(?)

答案 3 :(得分:0)

确保将整个主函数内容包装在try catch()中。然后,您可以显示消息以找出缺少的程序集。执行此操作后,转到引用中的该程序集,并在其属性集中设置CopyLocal = true。

例如:

        [STAThread]
    static void Main()
    {
        try
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MyForm());
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

答案 4 :(得分:0)

使用sysinternals中的进程监视器 - 这将让您看到您的应用尝试打开的文件