c# 从另一个应用程序运行我的 c# DLL
我有一个 WinForms 应用程序,我已将其编译为 DLL。
我想使用 dll 从另一个 winforms 应用程序运行启动应用程序。 因此,应用程序 A 将可以选择运行应用程序 B。
实现此目的的最佳方法是什么?我应该为我的 win 表单应用程序使用 DLL 还是 EXE 是更好的选择?
谢谢!
I have a WinForms app which I have compiled to DLL.
I would like to use the dll to run start the app from another winforms app.
So App A will have an option to run App B.
What is the best way to achieve this? Should I be using a DLL for this my win forms app or is EXE the better option?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
当应用程序 B 完全独立于应用程序 A 时,您应该使用 EXE 并启动它
System.Diagnostics.Process
(左右)。否则,您可以使用new
在应用程序 A 中实例化应用程序 B 的主窗口类来“启动”该应用程序。在这种情况下,您还可以使用 EXE 而不是 DLL,DLL 也可以作为程序集引用。When app B is completely independant of app A, you should use an EXE and start it with
System.Diagnostics.Process
(or so). Otherwise you could instantiate the main window class of app B in app A withnew
to 'start' that app. In that case you can also use an EXE instead of a DLL, which can also be referenced as assembly.我会将 .dll 变成 .exe。如果您有 .dll 文件的源代码,则可以修改项目属性页上的项目输出以输出可执行二进制文件。如果您没有源代码,则可以创建一个构建为 .exe 的新项目。新项目应引用并调用 .dll 文件。
要从 C# 应用程序启动 .exe(假设 .exe 与主应用程序 .exe 位于同一位置),请调用 Process.Start 如下:
这会将应用程序作为完全独立的 Windows 进程启动。因此,终止第一个应用程序不会对第二个应用程序产生影响。
@Matthias 建议使用 new 运算符启动另一个应用程序。如果您希望两个应用程序具有相同的生命周期,并且可能共享内存,那么这可能是合适的。
I'd make the .dll into a .exe. If you have the source code for the .dll file, then you can modify the project output on the project properties page to output an executable binary. If you don't have the source code, then you can create a new project that builds to a .exe. The new project should reference and invoke the .dll file.
To launch the .exe from your C# application (assuming the .exe is in the same place as your main application .exe), call Process.Start as follows:
This will start the application as a completely separate windows process. So killing your first application will have no effect on the second one.
@Matthias suggested launching the other application using the
new
operator. If you wanted the two applications to have the same lifetime, and perhaps share memory, then this may be appropriate.