C#发布的程序.exe和dll,在启动时可以在我的计算机上运行,​​但不能在其他计算机上运行 - c#

所以基本上我编码了一些东西,当我按下开始时,它使用了dll等的内容。
当我这样做时,一切正常,我将所有.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);

而不是使用给定名称创建更多文件夹等。好吧,我不会描述所有内容,只需要知道如何找出问题所在即可。

参考方案

可能会引发一些异常,因此我将探讨最可能的罪魁祸首的原因...

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

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

缺少方法异常:如果找不到方法,则会发生这种情况。如果您正在“提供” GAC中也存在的DLL(例如System或mscorlib),则可能会发生这种情况。因为程序集决议会先检查GAC,即使您提供了副本,它也会使用GAC版本(如果存在)。如果您未指定特定版本的要求,则可能会导致问题,因为它可能会钩入.NET 4.0程序集中,而该程序集应该抓住4.5版本。确保安装了正确版本的.NET,然后尝试为所有引用创建项目Require Sepcific Version: True

从线程调用ActiveX DLL - c#

我有一个ActiveX(COM)DLL,它可以进行Windows系统调用(例如ReadFile()和WriteFile())。我的GUI(使用Python或C#)在主GUI线程中创建DLL的实例。但是,为了从线程对其进行调用,无论使用C#还是Python,都必须在每个线程中创建DLL的新实例。 (作为一个补充说明,可以从C#中的线程调用原始实例,但这会阻塞主…

可与php和java互操作的C#dll - c#

我需要在C Sharp中创建一个可与php和Tomcat / Java webservices互操作的dll。普通的C#类库可以帮助我吗?谢谢,约翰 参考方案 普通的C#类库可以帮助我吗?您可以使用可互操作的WCF service将类库公开为basicHttpBinding,这可以被PHP和Java使用。

加载/卸载带有C#问题的C dll - c#

我在使用外部本机DLL时遇到问题。我正在ASP.NET 1.1 Web应用程序上工作,并具有通过DLLImport指令加载的此DLL。这就是我映射DLL函数的方式: [DllImport("somedllname", CallingConvention=CallingConvention.StdCall)] public static e…

使用存储在与主程序不同的文件夹中的参考库(dll)? - c#

(这可能是一个很明显的问题,但我不确定该问Bing / Google是什么)在VS2008(C#Winforms)项目中,有大量引用的第三方库。该项目使用“ Copy Local = True”,以便使各种DLL文件最终与已编译的应用程序位于同一文件夹中。为了清理问题,我想修改程序,使库都在子文件夹下。例如:C:\ MyProgram \->主程序文件…

在C++代码中使用C#dll - c#

我需要整合这个C# dll在我的C++代码中。我想从dll中调用用C#编写的某些函数,而其余代码则用C++编写。最简单,最快的方法是什么?该程序仅在Windows上执行。 参考方案 从非托管代码调用.NET DLL基本上有两种情况: .NET DLL公开一个COM接口。在这种情况下,您可以从C++代码中使用COM。 .NET DLL不公开COM接口。在这种情…