【问题标题】:Dynamically decide Winforms or Wpf at startup?在启动时动态决定 Winforms 或 Wpf?
【发布时间】: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


【解决方案1】:

在您决定组装时,只需调用Process.Start() 并运行正确的应用程序。不要混合开发中的东西。

【讨论】:

  • 如果你想走这条路,这是唯一可行的选择(虽然我无法想象需要它的场景),因为 WPF 应用程序没有“传统”外部入口点方法——入口点由App生成的类实现,在你的情况下,它必须在DLL中,这不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-19
相关资源
最近更新 更多