2011-06-02 45 views
0

我最近在尝试使用Fluent Nhibernate运行SQLLite驱动的内存中存储库模拟(存储库模式)时遇到了一些问题。当我在Windows Server 2008上针对(TeamCity)构建代理运行测试时,测试失败,无法加载System.Data.SQLite异常。MS为x86和x64版本构建双组件以及TeamCity

经过一番捣鼓之后,我记得在下载的SqlLite二进制文件中有一个x64版本的System.Data.SQLite。通过NUnit UI放置单元测试组件旁边的测试并运行测试,不再抛出任何异常。

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

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

写这个还有另外一个选项 - 但是很麻烦 - 在svn build source被下载之后,以及使用脚本运行之前修改项目文件。

回答

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> 
+0

谢谢你的例子蜘蛛。我确实尝试过,但有两个问题;一个人不能再使用Visual Studio UI作为参考(构建仍然有效),第二个问题,TeamCity代理并没有拉入正确的组件。剂。 – 2011-06-03 12:31:55