【发布时间】:2012-09-18 23:31:36
【问题描述】:
我有一个用例,如果有一个 exe 可以在启动时决定它是托管 only WPF 应用程序代码还是 only WinForms 代码,这将很有用。一旦做出决定,exe 将简单地加载一个 dll(用于 WinForms)或不同的 dll(用于 WPF)。
我希望 exe 的代码(和引用)尽可能少,并将大部分(如果不是全部)应用程序逻辑放在一组 dll 中。这是我的想法:
MyApp.exe <- The exe shim.
MyApp.Core.dll <- Things and Stuff.
MyApp.Windows.Forms.dll <- The WinForms dll.
MyApp.Windows.dll <- The WPF dll.
MyApp.exe 将仅引用 WinForms 和 WPF 共有的 .NET 框架程序集。 (所以,System, System.Core, System.Data, System.Xml, etc)然后它只会动态加载对 MyApp.Windows.dll 或 MyApp.Windows.dll 的引用,这将完成其余的工作。
我的问题是:
- 可能出了什么问题?
- 我找不到任何示例。可以吗?
- 为了避免拥有 2 个独立的 exe,是否值得麻烦?
(基本上,对于最终用户(开发人员)来说,单个 exe 真的性感和简单,但它不是完全必要的。所以如果这个想法是方式,远离人迹罕至的地方,可能会导致我不想这样做的异常问题。)
谢谢。
【问题讨论】:
-
这似乎是一场开发噩梦,试图在单个应用程序中开发 WPF 和 WinForms。为什么不只使用一个只检查标准并调用其他两个应用程序之一的加载程序:WPF 或 WinForms 应用程序?
-
嗯,它有什么特别可怕的地方?这是问题的一部分,因此如果您愿意,您可以继续提出您的想法作为答案。当我构建一个 WPF 应用程序时,我将大部分代码放在一个 dll 中,只有 App.xaml(.cs) 进入 exe。
-
#1,不支持。您必须将 WPF 代码/引用添加到在 VS 中创建的 WinForms 应用程序,或者将 WinFormst 代码/引用添加到 WPF 应用程序。我不知道这对 VS 设计师意味着什么。此外,对 Settings、Resources 或 app.config 的任何影响都是未知的。
-
#1 not supported 是我听过的最佳答案。我暂时把它放在一边,并计划两个独立的前任。没什么大不了的。谢谢。
-
在 WinForm 中创建一个版本的应用程序。在 WPF 中创建另一个版本的应用程序。他们对彼此的了解就像 Microsoft Words 对 Firefox 的了解一样多。然后创建第三个应用程序(批处理?),根据任何标准,决定运行哪个应用程序。
标签: c# .net wpf windows winforms