最近,根據產品的架構及公司內部開發的分組。
一個產品的不同模塊被拆分到不同的小組去開發。每個模塊都是獨立的WPF應用程序,最後合併在總的項目。
這樣,也就導致了下面一些問題:
1. 效率--調用進程顯然會增加響應的時間。
2. 性能--每個獨立進程,都需要佔用一定的內存。我試過一個空的WPF啓動來就要佔用20-30M內存。這樣,隨着模塊的逐步增加,勢必成爲瓶頸。
3. 調試—進程間無法捕獲異常,進程如果出錯了,就只能指望程序員得日誌了。只能期盼着他多寫日誌。
(多寫點日誌會死啊?連錯誤日誌都不寫的真該拉出去槍斃。應該把那些不寫日誌的扔到生產環境,然後在客戶眼皮底下,程序崩潰,讓他找不到原因崩潰去吧,流汗去吧、緊張去吧、哭去吧、找地縫鑽去吧。。。。哈哈哈。)
4. 部署--編譯好主程序,還要將各個子模塊編譯好的程序分別放入相應的目錄。
於是,就考慮着把子模塊作爲類庫引進項目,在一個進程內切換對象。但是,WPF是無法直接編譯成DLL的。
導致下面的錯誤:
Library project file cannot specify ApplicationDefinition element
解決方案一:
從項目移除或刪除WPF Application自動生成的Window1和App
設置Project > Properties > Application > Output Type = Class
解決方案二:
修改App的Build Action屬性,默認是ApplicationDefinition
App > Properties > Build Action = None
設置Project > Properties > Application > Output Type = Class
在需要變回WPF Application時,反之則可。附件帶上小DEMO。