VB.NET GetInstalledVoices仅适用于x86,而不适用于任何CPU

VB.NET GetInstalledVoices仅适用于x86,而不适用于任何CPU,vb.net,formatexception,Vb.net,Formatexception,我有以下代码: Imports System.Speech.Synthesis Public Class Form1 Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim m_Synth As New SpeechSynthesizer For Each v As InstalledVoice In m_Sy

我有以下代码:

 Imports System.Speech.Synthesis

 Public Class Form1

     Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim m_Synth As New SpeechSynthesizer
        For Each v As InstalledVoice In m_Synth.GetInstalledVoices
            Debug.WriteLine(v.VoiceInfo.Name)
        Next

    End Sub
 End Class
停在

        For Each v As InstalledVoice In m_Synth.GetInstalledVoices
并给出错误“System.FormatException”

这是StackTrace:

bei System.Number.StringToNumber(字符串str、NumberStyles选项、NumberBuffer&Number、NumberFormatInfo信息、布尔解析十进制) bei System.Number.ParseInt32(字符串s、NumberStyles样式、NumberFormatInfo信息) bei System.Speech.Internal.SapiAttributeParser.GetCultureInfo语言字符串(字符串值字符串) bei系统。语音。合成。VoiceInfo..ctor(VoiceObjectToken) bei系统。语音。内部。合成。语音合成。内置安装语音(语音合成语音合成器) bei系统.语音.内部.合成.语音合成..ctor(WeakReference Speech合成器) bei系统。语音。合成。语音合成器。get_语音合成器() bei系统。语音。合成。语音合成器。GetInstalledVoices() bei voice_test.Form1.Form1_Load(对象发送方,事件参数e)在C:\Users\MyUser\Downloads\kontakt\voice test\voice test\Form1.vb:Zeile 8中

只有将项目的“扩展编译选项”设置为“目标CPU:x86”时,才会出现此问题。 如果我将其设置为“Target CPU:Any CPU”,则代码运行时不会出现任何错误,并按预期返回名称。 目标框架是“.NET框架4”。 我正在运行Win7 64位

有人知道会出什么问题吗


谢谢。

可能重复的我不这么认为,因为我的问题可以通过从32位切换到64位来解决。这在接受答案的评论中已经明确讨论过。@Hans Passant您只提到“64位操作系统可能会有复杂情况”,对吗?然而,我在MS Connect上提交了一份错误报告。如果64位版本的框架可以从注册表中很好地读取,而32位版本不能,则可能存在错误,对吗?叹气,单击“显示2条更多注释”。这是最后一个。不要在connect上提交错误报告,这是您的机器的问题。如果您对使用Regedit.exe不够熟悉,请向同事寻求帮助,以解决此问题