C#应用程序无法在另一台计算机上运行。

4
我使用Visual Studio 2008中的“Release”配置编译了我的C# Windows窗体应用程序。当我尝试在另一台计算机上运行它时,根本没有显示任何窗口。该程序是在Windows 7上编译的,而另一台计算机安装的是Windows XP系统。可能是什么原因呢? 补充说明: 我没有创建任何安装程序。另一台计算机安装的是.NET Framework 3.0而不是3.5,但简单的“Hello World”应用程序可以正常运行。我尝试将程序复制到我的计算机上的另一个文件夹中,但没有任何变化。

4
可以是任何问题。缺少权限、缺少程序集、缺少设置等等……这里的人需要更多细节。 - Mike Chess
1
没有出现任何错误,应用程序日志中也没有任何内容,在任务管理器中也找不到该进程的痕迹? - Michael Todd
1
窗口绘制前就已经崩溃了。你是否捕获了错误却没有抛出或记录它?假设另一台计算机已安装.NET 3.5运行时。你尝试过从命令行启动吗?有返回信息吗?任务管理器中是否有任何正在运行的进程?内存利用率如何? - Rob Fuller
另一台计算机已安装了 .net Framework 3.0。 - Sergey
1
在我看来,为什么并不是很重要。当你部署一个应用程序时,你需要创建一个安装程序(或使用ClickOnce)。就这么简单。几乎所有的非平凡应用程序今天都不能通过简单地复制几个文件来成功部署。 - Aaronaught
显示剩余7条评论
9个回答

5

不要仅仅复制文件,而是创建一个安装程序。这将有助于确定是否缺少任何东西,例如 .net fw 3.5。


4

您说:

另一台机器上安装了 .net framework 3.0,但没有安装 3.5 版本。

如果您的项目配置为使用 .NET 3.5,则必须在另一台机器上安装它。


3

有很多可能性,从权限问题到安装的框架版本不同。考虑添加部署项目,至少所有依赖项都会被处理,消除了大量可能出现的问题。

编辑:但是如果没有更多详细信息,我们实际上无法提供帮助。


3

我同意大家的观点。有很多事情可能会出错。以下是我的看法。在应用程序启动时是否产生任何线程?如果是,请确保您的子线程不会失败,并且如果您正在进行任何异常处理,请记住您将无法从主线程捕获子线程中的异常,因为它们不会冒泡并且实际上会被吞噬。提前告诉你。


3

请仔细检查.NET版本,如果您使用的是.NET 3.5版本构建的发布版,而其他计算机没有安装.NET 3.5,则必须安装它,还要记得安装Service Pack 1。请查看此SO 线程 ,以确定已安装的.NET版本,在'出现故障的'计算机上运行它以查看版本...


2

尝试从命令提示符中运行您的程序。有时会在控制台上输出消息。我猜测这可能与 .net 版本有关。


1
只需在解决方案资源管理器中添加另一个表单,并将先前表单的源代码复制到新表单中,同时从表单设计器复制到新表单设计器即可。

1

启动程序后,查看Windows事件日志。您将在Windows协议应用程序中找到一个错误条目。可能有两个条目。它会告诉您原因。


0

在控制台中运行您的应用程序,前缀为 dotnet:

dotnet yourapp.exe

它给了我更多的日志要处理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接