1. 问题
A----------a.config
|
|______ConfigDir
|
|--------b.config
|
---------c.config
A 项目使用了多个配置文件,而且配置文件分布多个目录,A在运行过程中会把a.config文件以及ConfigDir目录与Config目录下的两个b.Config与c.Config文件拷贝到Bin目录。
B是测试A的单元测试项目时,把a.config文件与 ConfigDir目录及b.config 与c.config文件文件拷贝到B的Config下。运行B会发现找不到配置文件a,b,c。
2. 分析
因为B 在默认的情况下它的 AppDomain.CurrentDomain.BaseDirectory目录并不是测试目录下的Bin目录,而是根据测试时[登录用户]_[机器名] [运行时间](如[XX]_[PCXXX][ 2011-03-16 20_04_04]格式)动态生成的一个目录。直接把A项目的配置文件与目录结构拷贝到B是找不到配置文件的。
B测试项目在
3. 解决方法
1) 打开菜单栏选Edit Test Run Configurations
2) 选择Deployment 去掉Enable deployment,这是最简单的改法。再次运行测试项目会发现测试项目,已近能找到配置文件了 ,此时的 AppDomain.CurrentDomain.BaseDirectory就是测试目录的Bin。当然另一种改法就是选择Enable deployment后,把所有A项目依赖的配置文件与目录结构都添加进去(添加目录使用Add File ,添加目录使用Add Directory),再次运行测试项目,会发现动态生成的测试目录中已经拷贝了配置文件了。