Mrr*_*mun 5 c# projects-and-solutions visual-studio
我正在开发一个包含两个C#项目的Visual Studio 2010 Ultimate解决方案:一个Forms项目和一个控制台项目.在程序上,它们是完全分开的; 两个项目的主要部分可以在没有其他项目的情况下运行 我想要做的是通过按下Forms应用程序中的按钮来调用控制台应用程序,并根据Forms应用程序设置某些选项.因此,您可以将Forms应用程序视为一个"启动器"应用程序.
我现在实现此方法的方法是使用System.Diagnostics.Process.Startwith "cmd"作为第一个参数,并将控制台应用程序的可执行文件(以及CLI参数)作为第二个参数.但这是一个糟糕的解决方案,因为当使用安装程序部署到其他计算机时会崩溃.
我还尝试在Forms对象中创建对控制台项目的引用,在控制台项目中使用Programpublic和static,并调用控制台项目的Main方法,但由于没有有效的输出句柄,这最终会导致抛出异常.
我做了很多谷歌搜索,有些在这里搜索,甚至检查了提交页面上的"类似问题",似乎没有人知道如何做我想做的事情.任何可以让我走上正轨的指针?
仅供参考:我知道可能有一千万种更好的方法可以做到这一点,但我有几个理由想要并且需要这样做.我知道我可以为CLI程序创建一个单独的GUI并复制相关代码,或者将所有内容合并到一个项目中,并创建一个单独的输出窗口,或者其他各种解决方案.但是我需要这个解决方案有两个原因:(1)我有一个相当复杂的CLI程序,它作为一个CLI程序运行良好,现在需要一个用户友好的方式来启动它,以及(2)以其他方式解决问题回答"如果你不能从另一个中调用一个,为什么在同一个解决方案中为什么要打扰几个可执行项目呢?"
你这样做的方式很好 - 只需要稍微调整一下.
首先,在启动时,不要cmd将可执行文件作为参数运行,myapp.exe直接运行控制台应用程序作为在Process.Start中执行的命令.
下一步是使应用程序从安装的任何位置运行.最简单的方法是简单地将两个可执行文件并排部署在同一文件夹中.使用Application.StartupPath来发现你的表单应用程序从(在其他应用程序驻留,因此)推出的文件夹.使用Path.Combine(Path.GetDirectory(Application.StartupPath), "myapp.exe")生成的exe运行的全路径名.
另一种选择是使用安装程序,然后可以将其他应用程序的位置存储在已知位置(例如注册表项),但这样的复杂程度会增加很少(除非您出于其他原因需要安装程序).
| 归档时间: |
|
| 查看次数: |
835 次 |
| 最近记录: |