最近,根据产品的架构及公司内部开发的分组。

 
  一个产品的不同模块被拆分到不同的小组去开发。每个模块都是独立的WPF应用程序,最后合并在总的项目。
 
  这样,也就导致了下面一些问题:
  1. 效率--调用进程显然会增加响应的时间。
 
  2. 性能--每个独立进程,都需要占用一定的内存。我试过一个空的WPF启动来就要占用20-30M内存。这样,随着模块的逐步增加,势必成为瓶颈。
   
  3. 调试—进程间无法捕获异常,进程如果出错了,就只能指望程序员得日志了。只能期盼着他多写日志。
     (多写点日志会死啊?连错误日志都不写的真该拉出去枪毙。应该把那些不写日志的扔到生产环境,然后在客户眼皮底下,程序崩溃,让他找不到原因崩溃去吧,流汗去吧、紧张去吧、哭去吧、找地缝钻去吧。。。。哈哈哈。)
      
  4. 部署--编译好主程序,还要将各个子模块编译好的程序分别放入相应的目录。
 
  于是,就考虑着把子模块作为类库引进项目,在一个进程内切换对象。但是,WPF是无法直接编译成DLL的。
 
  导致下面的错误:
  Library project file cannot specify ApplicationDefinition element

 

将WPF应用程序转化为类库_DLL

 

解决方案一:
从项目移除或删除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。