我最近在尝试使用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构建源之后和使用脚本运行构建之前修改项目文件。
答案 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>