C#发布的程序,.exe和dll,点击开始时,在我的计算机上工作,但不能在其他计算机上工作

本文关键字:计算机 工作 开始时 其他 但不能 我的 程序 exe dll | 更新日期: 2023-09-27 18:37:13

所以基本上我编写了一些东西,当我按开始时,它使用来自dlls等的内容。当我这样做时,一切正常,我将所有.dll都放在与.exe相同的文件夹中,但是在别人的电脑上它就是行不通,它崩溃了,轰隆隆。

即使他像我一样拥有 100% 的一切

我不知道该怎么做才能找到导致这种情况的原因,有什么办法知道吗?

private void nsButtonAutoStart_Click(object sender, EventArgs e)
    {
        secondThread = new Thread( () => Start(dsflfsdl, sgdsgd, sggdsg, etc));
        secondThread.Start();          
    }

它的作用是:

if (!Directory.Exists(user))
                        Directory.CreateDirectory(user);

而不是创建更多具有给定名称的文件夹等,好吧,我不会描述所有内容,只需要知道如何发现问题所在。

C#发布的程序,.exe和dll,点击开始时,在我的计算机上工作,但不能在其他计算机上工作

有几个

例外可以从中抛出,所以我将介绍最有可能的罪魁祸首的原因......

  • 框架:当未安装 .NET Framework 或未安装正确版本时,可能会出现这种情况。请注意,System.___ Dll 通常包含在 GAC 中,但有时可能会丢失。安装 GAC 浏览器工具,并确保项目中引用的所有内容不仅已安装,而且在 GAC 中正确显示。
  • 权限
  • :由于程序可能被重定向为来自其他地方并且缺少发布者签名,因此它没有文件系统权限,因此即使尝试查看文件也会崩溃。这可以通过尝试在 Windows 中Run as Administrator另一台计算机来解决。这也可能导致DLL Not Found异常,因为无法访问所需 Dll 的运行目录。

如何查找异常:如果客户端看到"程序已停止工作"窗口,通常会有查看"更多详细信息"的选项,其中"更多数据 X"的一行将是实际的异常类型。

  • 缺少方法异常:如果找不到方法,则可能会发生这种情况。如果您"提供"也存在于 GAC 上的 DLL(例如,System 或 mscorlib),则可能会发生这种情况。Becuase 程序集决议首先检查 GAC,如果存在 GAC 版本,它将使用 GAC 版本,即使您已提供副本也是如此。如果未指定特定版本的要求,这可能会导致问题,因为它可能会挂接到 .NET 4.0 程序集,在该程序集中,它应该抓取 4.5 程序集。确保安装了正确版本的 .NET,并尝试使项目对所有引用Require Sepcific Version: True

我发现了问题,基本上是他们拥有的.dll,这是好的,但它缺少一些数据,它是 300 kb 而不是 454 kb