我的数据层项目中有一个post build事件,它根据所选的构建配置将不同的配置文件复制到目标文件夹,即
:: 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服务器上的目标文件夹时,我注意到无论我做什么,服务器上的目标文件夹总是获取原始配置文件。事实证明,我自己将这些依赖项添加到LocalTestRun.testconfig
文件中,MSTest使用该文件来复制必要的文件。我很久以前就这么做了,忘了;原因还在于引用数据层的测试项目根本没有复制配置文件。
最后,解决方案只是在CI服务器设置中指定不同的.testconfig
文件(包含不同的依赖项)。
答案 0 :(得分:0)
艰难的道路:
copy "$(ProjectDir)hibernate.cfg.xml.unittesting" "$(TargetDir)hibernate.cfg.xml" /y
copy "$(ProjectDir)hibernate.cfg.xml.unittesting" "$(TargetDir)..\OtherProjectOne\bin\$(Configuration)\hibernate.cfg.xml" /y
copy "$(ProjectDir)hibernate.cfg.xml.unittesting" "$(TargetDir)..\OtherProjectTwo\bin\$(Configuration)\hibernate.cfg.xml" /y
基本上来自$(TargetDir)的相对路径
答案 1 :(得分:0)
由于我的问题主要是为了单元测试目的而复制正确的配置文件,我可能会将其添加为答案。
问题是我的LocalTestRun.testconfig
文件中包含以下元素:
<Deployment>
<DeploymentItem filename="Project\DataLayer\hibernate.cfg.xml" />
</Deployment>
始终将配置文件复制到所有测试项目的目标构建文件夹中。所以解决方案是创建一个不同的.testconfig
文件并在我们的构建服务器上使用它。