我对etp不过是过客,前些日子看见msdn上的介绍,于是就尝试了一番。
可是想当微软的过客向来不容易,不留下些许过夜费,是别想轻易提着裤子走人的。这不,刚开始到是方便,新建一个企业级模板项目,哗哗,层次分明的项目就自动建立好了,从web,winui,business facade到business rule,dataaccess。好爽。于是乎,就是一番狂coding。那知道末了,想为WINUI加个配置文件,放放连接字符串,这时就出问题了,首先当然是去添加一个新项,在项目列表里去找“应用程序配置文件”,考,没有?没办法,自己建立一个xml文件,命名为app.config,这下总行了吧,vs的任务列表里忽然出现了什么“策略提醒:winui不允许存在appconfig",一头污水中,只好求教msdn,(过夜费我给还不成吗),果然找到了答案。
原来etp有个策略文件,用来对etp的架构进行约束,比如控制UI不能直接访问DataAccess,框架类不能包含窗体元素等等,这个策略文件叫DAP.tdl,存放在X:\Program Files\Microsoft Visual Studio .NET 2003\EnterpriseFrameworks\Policy(X为vs的安装盘)。
这个dap.tdl,是个xml文档,里头的学问老多了,msdn上连篇累牍的讲了n大版,我是个懒人,读个大概:大概没明白。总之这个文件不仅对架构进行了约束,比如你要往WinUi里加app.config,那就会出项策略提醒,而且还可以规定IDE的显示,比如,你要想通过VS往WINUI添加应用程序配置文件,或者往SystemFrameworks里拖几个窗体控件,那没门,不是不显示就是灰化,这个策略文件不但能规定项目能引用那个项目,不能引用那个项目,甚至可以精确到可以试用什么控件,不能试用什么控件,功能之强,可见一斑。
当然你可以自己定义自己的策略文件,但是建议你最后找个模板,然后改改。比如dap.tdl就是个很好的模板。
最后,为了解决配置文件的问题,我不得不重新建立了一个WinUI项目,和以前的WinUI不同,这个项目不是根据etp自动创建的,所有不受策略的影响,然后把老WinUI的内容悉数拷过来,可是注意千万别把assemblyinfo.cs也拷贝过去了,不然你的新项目也该弹出策略提醒了。
这当然是个笨办法,优雅的办法自然是修改一下策略文件,无奈人力有限,学海无边,还是缓缓吧,没准要是我硬上策略自定义,又牵连出一大帮x模板,y策略,z自定义什么的,非把俺累死不可(这就是盖茨的阴谋,把一个个大好青年全都摧残的不成人形,他自个儿就成天下最帅的程序员了)