Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 应用程序无法在其他计算机上运行_C# - Fatal编程技术网

C# 应用程序无法在其他计算机上运行

C# 应用程序无法在其他计算机上运行,c#,C#,我的第一个问题是无法让clickOnce工作。它立即失败了,要么没有消息,要么有两个消息框——一个说[程序名称]已停止工作,另一个问我是否想发送更多信息,同时提供更多似乎毫无意义的信息。 这在我的电脑上甚至不起作用,这可能是一个线索。 然后我决定使用debug folders.exe作为兼职解决方案。这在从我的计算机运行时有效,但不能从其他计算机运行,包括我开发的旧版本程序的计算机(尽管此后添加了许多新库)。它失败了,并收到来自cickOnce的相同错误消息 我使用WinDbg查看我的PC和旧开

我的第一个问题是无法让clickOnce工作。它立即失败了,要么没有消息,要么有两个消息框——一个说[程序名称]已停止工作,另一个问我是否想发送更多信息,同时提供更多似乎毫无意义的信息。 这在我的电脑上甚至不起作用,这可能是一个线索。 然后我决定使用debug folders.exe作为兼职解决方案。这在从我的计算机运行时有效,但不能从其他计算机运行,包括我开发的旧版本程序的计算机(尽管此后添加了许多新库)。它失败了,并收到来自cickOnce的相同错误消息

我使用WinDbg查看我的PC和旧开发PC之间的区别。 我注意到的唯一区别是,正在工作的PC具有以下特点:

ModLoad: 000007fe`fbaf0000 000007fe`fbb06000   C:\Windows\system32\netapi32.DLL

ModLoad: 000007fe`fbae0000 000007fe`fbaec000   C:\Windows\system32\netutils.dll 

ModLoad: 000007fe`fc180000 000007fe`fc1a3000   C:\Windows\system32\srvcli.dll 

ModLoad: 000007fe`fbac0000 000007fe`fbad5000   C:\Windows\system32\wkscli.dll two windows
ModLoad: 000007fe`f7f40000 000007fe`f7f5e000   C:\Windows\system32\LMIRfsClientNP.dll
虽然坏掉的电脑有这样的功能:

ModLoad: 000007fe`fbaf0000 000007fe`fbb06000   C:\Windows\system32\netapi32.DLL

ModLoad: 000007fe`fbae0000 000007fe`fbaec000   C:\Windows\system32\netutils.dll 

ModLoad: 000007fe`fc180000 000007fe`fc1a3000   C:\Windows\system32\srvcli.dll 

ModLoad: 000007fe`fbac0000 000007fe`fbad5000   C:\Windows\system32\wkscli.dll two windows
ModLoad: 000007fe`f7f40000 000007fe`f7f5e000   C:\Windows\system32\LMIRfsClientNP.dll
我不明白他们为什么不同,或者这是否重要

我还用了依赖步行器。从这一点上,我看到不同的CPU设置存在问题。除了exe以外的所有东西都是X64,因此我通过配置管理器添加了一个新的X64选项,并将exe项目设置为使用那些在dependency walker中消除了注意事项但没有解决我的问题的选项

我还尝试了发布版本,但没有成功


是否有人对我如何找出更多可能导致此问题的原因有任何解决方案或建议?

检查以确保目标计算机与您编译的.NET版本相同。另外,如果它在32位系统上运行,请确保您没有针对64位系统进行编译。最后,确保包含所有必要的库。仅仅通过查看这些错误,很明显,缺少依赖项或权限都存在某种问题?希望您不会遇到这样的情况。

从一个非常简单的ClickOnce应用程序(只显示一个消息框)开始,并确保您在目标计算机上安装了正确版本的.Net。一旦你有工作,添加东西,直到它打破…检查你的事件日志-在那里有任何错误?空WPF应用程序运行没有麻烦。这是一个非常大的程序,但如果涉及到这一点,我会把它删掉。我使用NLog,但没有创建任何内容。我将对此进行研究,但我认为它在有时间使用NLog之前就失败了。我检查了事件查看器,发现异常信息:Autofac.Core.dependencResolutionException,后跟堆栈跟踪。不确定这意味着什么,但看起来像是进步@user3350158如果所有编译选项都相同,我打赌这与库有关。确保您的目标计算机具有它们(并且它们是相同的版本)。目标计算机是64位的。我编译64位只是为了保持简单。我的目标是.NET4.0,但我确实使用较旧的库。我将调查权限。您认为我可能会在权限方面遇到什么问题。不确定什么可能适用于me@user3350158试着把它编译成32,看看是否可以修复它。至于权限,不确定,但我过去遇到过不同的问题。其中一台计算机不允许在未在administrator下运行安装过程的情况下安装任何程序。我没有太多的时间花在它上面,所以我从来没有机会发现为什么(我确信这与目录上的权限有关…可能是临时权限)。您可以从权限提示中获得它。我的主要突破来自于认识到检查基本的Windows事件查看器——不好意思说我甚至不知道它的存在。这向我显示了一个Autofac错误,这并不意味着什么,但促使我在另一台计算机上安装了Visual Studio的试用版,看看是否可以获得更多信息。相反,我得到了一个关于不连接数据库的提示,我意识到新的live DB没有授予公司其他计算机权限。autofac错误源于无法从要注入的数据库检索信息。