MS为x86和x64版本和TeamCity构建双组件

时间:2011-06-02 15:07:37

标签: msbuild x86 64-bit teamcity

我最近在尝试使用Fluent Nhibernate运行SQLLite支持的内存存储库mock(存储库模式)时遇到了一些问题。当我在Windows Server 2008上针对(TeamCity)构建代理运行测试时,测试失败,无法加载System.Data.SQLite异常。

经过一番调整,我记得在下载的SqlLite二进制文件中有一个x64版本的System.Data.SQLite。删除单元测试组件旁边的那个并通过NUnit UI运行测试工作,不再抛出任何异常。

我的问题是:是否有可能告诉构建类似:在x64系统上编译时,从文件夹B引用二进制文件,何时在x86系统上引用文件夹A?所以条件参考包括?

我现在能想到的唯一另一个选择是将TeamCity构建代理限制为x64并使用命令行脚本构建步骤覆盖bin \ Release文件夹中的程序集,在运行的构建完成ant单元测试之间。开发环境都是x86,所以这是问题的根源。

写这个还有另外一个选项 - 但是一个混乱的选项 - 在下载svn构建源之后和使用脚本运行构建之前修改项目文件。

1 个答案:

答案 0 :(得分:2)

引用可以在您的项目文件中有条件(我正在编写下面引用的详细信息)。

<Reference
  Include="SQLLite"
  Condition="'$(Platform)' == 'x64'">
  <HintPath>PathTo/x64/SqlLite.dll"</HintPath>
</Reference>
<Reference
  Include="SQLLite"
  Condition="'$(Platform)' == 'Win32'">
  <HintPath>PathTo/Win32/SqlLite.dll"</HintPath>
</Reference>