我在数据层项目中有一个后生成事件上的副本取决于所选择的构建配置不同的配置文件到目标文件夹,即某些文件复制到所有相关项目的CI服务器
:: hibernate.cfg.xml is copied by default (set as "Content" file)
:: so override with the appropriate config for the build server
if $(ConfigurationName) == UnitTesting (
copy "$(ProjectDir)hibernate.cfg.xml.unittesting" "$(TargetDir)hibernate.cfg.xml" /y
)
并将其复制到此项目的相应目标文件夹(例如Company.Project.Data\bin\x86\UnitTesting
)。但是,当我在CI服务器(Bamboo)上构建测试项目时,在所有参考数据层的测试项目中,我仍然可以获得原始文件。
如何强制Visual Studio或MSBuild将适当的配置文件复制到引用此项目的所有目标为特定配置?
(更新)
虽然看着我们CI服务器上的文件夹的目标,我发现,无论我做什么,在服务器上的目标文件夹总是得到原来的配置文件。事实证明,我将这些依赖关系自己添加到MSTest用于复制必要文件的LocalTestRun.testconfig
文件中。我很久以前就这样做了,忘了。原因是引用数据层的测试项目根本没有得到配置文件的复制。
因此最后,解决方案只是在CI服务器设置中指定不同的.testconfig
文件(包含不同的依赖关系)。
如何检查它是否是原始文件?按时间,内容还是其他?你怎么知道其他项目引用原始文件? –
@starain:这是问题之一,Visual Studio知道这一点,因为他们引用复制文件的项目作为其构建过程的一部分(文件类型设置为“内容”,“总是复制”)。到目前为止,我不必检查,因为通过开发机器和我的测试服务器具有相同的配置。但事实证明,我前一段时间自己做了一件事,并忘了它(请参阅上面的更新)。 – Lou
您可以将解决方案发布为答案,并在24小时后将其标记为答案。 –