如何将某些C#代码转换为VB.NET

时间:2013-03-23 13:54:11

标签: vb.net sql-server-2005 visual-studio-2008

我一直在谷歌上搜索这篇文章

C# How to get SQL Server installation path programatically?

这正是我在VB.NET中所需要的,但是我不擅长将这段代码翻译成VB.NET代码。所以,任何帮助都会非常感激。谢谢。

注意:我正在使用SQL Server 2005和Visual Basic 2008

4 个答案:

答案 0 :(得分:2)

虽然这个问题最初的标题是关于检索SQL Server的安装路径,但我觉得它更多的是关于代码转换问题(解决方案已经存在,只是没有使用正确的语言)。

但后来我认为原始代码中的方法相当直接。

Evan为您提供了我认为现有解决方案的可行翻译。但是执行此特定任务可能是一种更简单的方法 - 假设您只需找到已连接的实例的安装路径,并假设可以读取注册表的用户也具有VIEW SERVER STATE权限 - 是从您的程序中对the DMV sys.dm_os_loaded_modules发出这个简单的查询:

SELECT name 
  FROM sys.dm_os_loaded_modules
  WHERE name LIKE '%sqlservr.exe';

这会给你这样的东西:

  

C:\ Program Files \ Microsoft SQL Server \ MSSQL11.SQL2012 \ MSSQL \ Binn \ sqlservr.exe

您需要进行一些解析,具体取决于您所追求的内容(例如,您想要停留在MSSQL还是Binn?),但这比阅读注册表要容易得多或其他方法恕我直言。

答案 1 :(得分:1)

我刚刚使用了代码转换器......只有基本的东西需要改变..

Using sqlServerKey As RegistryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Microsoft SQL Server")
    For Each subKeyName As String In sqlServerKey.GetSubKeyNames()
        If subKeyName.StartsWith("MSSQL.") Then
            Using instanceKey As RegistryKey = sqlServerKey.OpenSubKey(subKeyName)
                Dim instanceName As String = instanceKey.GetValue("").ToString()

                If instanceName = "MSSQLSERVER" Then
                    'say
                    Dim path__1 As String = instanceKey.OpenSubKey("Setup").GetValue("SQLBinRoot").ToString()
                    path__1 = Path.Combine(path__1, "sqlserver.exe")
                    Return path__1
                End If
            End Using
        End If
    Next
End Using

如果您只是阅读有关C#的快速文章,您会注意到字符串的声明方式不同,并且存在较小的语法差异,例如foreach vs for each

您可以阅读here了解更常见的差异。

答案 2 :(得分:1)

我使用了一个非常好的( 离线 )工具,名为 Convert .NET Free

来自www.fishcodelib.com

这是最新版本的直接链接(截至19/04/14)大小: 2.06MB,文件:Zip:

[Direct Link]

希望这有一些用处;)

P.S。此软件需要 .NET Framework 4.5

答案 3 :(得分:0)

这几乎永远不会失败!祝你好运

http://www.developerfusion.com/tools/convert/csharp-to-vb/