C# 在64位环境中作为32位进程运行指定的NUnit测试

C# 在64位环境中作为32位进程运行指定的NUnit测试,c#,nunit,teamcity,oledb,C#,Nunit,Teamcity,Oledb,我有一个使用OLEDB从Excel文件导入数据的组件。由于业务风险和时间限制,我的可执行shell被编译为x86(32位),以避免出现错误,并且组件在加载到32位shell中时可以完美地运行 但是,我的CI构建流程(TeamCity)正在64位流程中运行其TestRunner,因此针对上述功能的单元测试失败,并显示常见错误消息: 测试失败。System.InvalidOperationException:异常 “Microsoft.Jet.OLEDB.4.0”提供程序未在本地服务器上注册 机器

我有一个使用OLEDB从Excel文件导入数据的组件。由于业务风险和时间限制,我的可执行shell被编译为x86(32位),以避免出现错误,并且组件在加载到32位shell中时可以完美地运行

但是,我的CI构建流程(TeamCity)正在64位流程中运行其TestRunner,因此针对上述功能的单元测试失败,并显示常见错误消息:

测试失败。System.InvalidOperationException:异常 “Microsoft.Jet.OLEDB.4.0”提供程序未在本地服务器上注册 机器

我的解决办法似乎是

  • 更改CI测试运行程序-不可行,因为其他10个团队正在使用该测试运行程序
  • 确保此测试在32位进程中运行

  • 那么,有没有办法告诉NUnit或TeamCity NUnit测试运行程序在32位进程中运行特定测试?理想情况下,我希望相同的测试在IDE和CI中不经修改地运行。

    在单元测试项目中将“平台目标”更改为x86应该可以做到这一点。

    这不会影响整个测试项目吗?我想OP是想专门为一个测试这么做的。@SrikanthVenugopalan:是的,这会影响整个测试项目。由于完整的应用程序以x86的形式执行,我认为当完整的测试套件也以x86的形式执行时应该是可以的。公平地说,也许@MarkGreen可以决定。如果有测试级粒度解决方案,我会更加光鲜,但我想我总是可以创建一个单组件测试程序集。