最佳答案
我有一个为 AnyCPU 编译的 c # 单元测试项目。我们的构建服务器是一台64位机器,并且安装了一个64位 SQLExpress 实例。
测试项目使用类似于下面的代码来标识.MDF 文件的路径:
private string GetExpressPath()
{
RegistryKey sqlServerKey = Registry.LocalMachine.OpenSubKey( @"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL" );
string sqlExpressKeyName = (string) sqlServerKey.GetValue( "SQLEXPRESS" );
RegistryKey sqlInstanceSetupKey = sqlServerKey.OpenSubKey( sqlExpressKeyName + @"\Setup" );
return sqlInstanceSetupKey.GetValue( "SQLDataRoot" ).ToString();
}
这段代码在我们的32位工作站上运行良好,并且在构建服务器上运行良好,直到我最近使用 NCover 启用了代码覆盖率分析。因为 NCover 使用32位 COM 组件,所以测试运行程序(Gallio)作为32位进程运行。
检查注册表,下面没有“实例名称”键
Wow6432节点微软 Microsoft SQL Server
运行在32位模式下的应用程序是否有办法访问 Wow6432Node 之外的注册表?