我在C#winforms中创建了一个小程序,当我在Visual Studio 2017中启动它时运行正常。但是当我构建解决方案并双击.exe时,没有任何反应,没有屏幕出现,甚至任务管理器也看不到它。没有错误。它就像没有做任何事情!我唯一的猜测是我构建错了,因为我使用Nuget在te解决方案中安装newtonsofts JSON.NET,我是否需要做任何不同的事情或者只是构建解决方案?
[解决了]
今天我了解了bin和obj文件夹之间的区别,感谢大家的帮助
根据您的评论:
它位于项目的obj / debug文件夹中
听起来你运行错误的.exe。 obj
文件夹用于临时/ misc。构建过程中的文件(请参阅What is obj folder generated for?)。
相反,如果“Debug”是您正在构建的配置,则需要在bin\Debug
中运行exe。您可以在VS顶部看到哪个配置。
像其他人也提到的那样,确保将Newtonsoft.Json.dll复制到该输出目录中。一般来说,程序及其依赖关系需要在一起。否则,你的exe将不知道在哪里可以找到它需要运行的JSON代码。
99%的情况下,你应该假装obj
目录甚至没有。
如果仍然没有指向正确的方向,请从命令窗口运行应用程序。应该打印任何异常并且窗口将保持打开状态供您检查(这样做的好处是不需要任何额外的日志记录或异常处理代码来查看此错误)。
例如,我写了一个糟糕的应用程序,在一个名为NullReferenceException
的方法中从Test
调用Main
。正如您所看到的,堆栈跟踪很容易看到,即使我的应用程序崩溃了(归功于ColinM最初提出这个问题)。
我认为只有一个原因
在Visual Studio中预定义了一个command line argument。您的应用程序使用此参数执行,没有它,它会自动关闭,您甚至无法看到您的应用程序打开。
Right click on your project in VS -> Properties -> Debug
并查看命令行参数中是否有值
exe及其支持文件应位于bin文件夹中。不要只复制bin文件夹中的exe并尝试运行它。编写一些异常代码以获取详细信息是个好主意。