2012-09-18 46 views
2

我有一個使用情況下這將是有一個單一的exe文件,可以在啓動時決定是否它託管只有 WPF應用程序代碼或的WinForms代碼有用。一旦做出決定,exe文件只會加載一個DLL(用於WinForms)或不同的DLL(用於WPF)。在啓動時動態決定Winforms或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的會只引用了.NET Framework程序集是兩者共同的WinForms WPF。 (so,System, System.Core, System.Data, System.Xml, etc)然後,它會動態加載對MyApp.Windows.dll或MyApp.Windows.dll的引用,它將完成剩下的工作。

我的問題是:

  • 什麼能可能出錯?
  • 我找不到任何例子。你可以嗎?
  • 它是值得的麻煩只是爲了避免2個獨立的EXE文件?

(基本上,一個單一的EXE會很性感和簡單爲最終用戶(誰是開發者),但它不是完全必要。所以,如果這種想法是方式,方法因循守舊並可能導致不尋常的問題,我不想這樣做。)

謝謝。

+3

這似乎是這將是一個發展的噩夢,試圖開發一個單一的應用程序一個WPF和WinForms。爲什麼不只有一個加載器只是檢查標準並調用另外兩個應用程序之一:WPF或WinForms應用程序? –

+0

那麼,特別是它是怎樣的噩夢呢?這是問題的一部分,所以如果您願意,您可以繼續並將您的想法作爲答案。當我構建WPF應用程序時,我將大部分代碼放在dll中,只是App.xaml(.cs)進入exe文件。 –

+0

#1,不支持。您必須將WPF代碼/引用添加到在VS中創建的WinForms應用程序,或將WinFormst代碼/引用添加到WPF應用程序。我不知道VS設計師意味着什麼。另外,對Settings,Resources或app.config的任何影響都是未知的。 –

回答

2

當你決定組裝時,只需撥打Process.Start()並運行正確的應用程序。不要混淆發展的事情。

+1

這是唯一可行的選擇,如果你想沿着這條路線走下去(雖然我無法想象一個會要求它的場景),因爲WPF應用程序沒有「傳統」外部入口點方法 - 入口點是由'App'生成的類實現的,這個類必須位於你的DLL的DLL文件中,並且不起作用。 – Miral