环境:
windows server 2003 enterprice edition
vs2005 team suite

现像:
解决方案重新生成,项目重新生成出现“错误 CS0006: 未能找到元数据文件”。


 

原因:
经过跟踪,MSBuild的机制是:
    当重生新生成解决方案或项目时,生成项目会先清除输出目录下的全部生成文件(注意:是全部).然后copy obj目录下的生成文件到输出目录.


   
所以当某项目输出目录位于其它项目目录下,并且输出目录所在的项目输出目录也在本项目目录下.当重生新生成解决方案或输出目录所在的项目时会清除输出目录下的所有生成文件.这时当输出目录所在的项目对其它输出目录在本项目目录的项目存在依赖关系,那么当csc引用将会出现“错误 CS0006: 未能找到元数据文件”;
经过测试,输出目录不在项目目录内时,生成项目只会清除自已的生成文件,而不会清除依赖项目生成文件。问题解决


结论:

   
如果采用公用目录重新生成解决方案或项目并且项目间存在依赖关系,项目之间有依赖与被依赖关系时,输出目录不能位于依赖项目目录内。

posted on 2007-01-24 13:56  大地向北  阅读(16825)  评论(5编辑  收藏  举报