Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# VS 2015中的COM错误,未通过更改平台目标解决_C#_.net_Interop_Office Interop - Fatal编程技术网

C# VS 2015中的COM错误,未通过更改平台目标解决

C# VS 2015中的COM错误,未通过更改平台目标解决,c#,.net,interop,office-interop,C#,.net,Interop,Office Interop,正在检索具有CLSID的组件的COM类工厂 {000209FF-0000-0000-C000-0000000000 46}由于以下原因失败 错误:80040154类未注册(HRESULT异常: 0x80040154(REGDB_E_CLASSNOTREG)) 我正在尝试从C#应用程序(WPF)连接到microsoft word,但一直收到此消息。在我的计算机(64位)上,我有Word 2007 将平台目标更改为x86的常见解决方案不起作用,我还尝试了Microsoft.Office.Intero

正在检索具有CLSID的组件的COM类工厂 {000209FF-0000-0000-C000-0000000000 46}由于以下原因失败 错误:80040154类未注册(HRESULT异常: 0x80040154(REGDB_E_CLASSNOTREG))

我正在尝试从C#应用程序(WPF)连接到microsoft word,但一直收到此消息。在我的计算机(64位)上,我有Word 2007

将平台目标更改为x86的常见解决方案不起作用,我还尝试了Microsoft.Office.Interop.Word参考的三个不同版本,即12.0.0.0、14.0.0.0和15.0.0.0,都出现了相同的错误。我下载了2007年的PIA,我从安装程序中修改了VS以包括Microsoft Office Developer工具,并且我99%确定我已经安装了Office(我可以打开并使用Word):

我按照一些说明检查注册表,其中说明,如果“InstallRoot”文件夹存在于某个位置,则意味着Office已安装:

我确信Office或interop引用没有正确安装,但我对在注册表编辑器中导航甚至开始检查这一点感到不舒服

我整天都在读这个错误的解决方案,但似乎每种情况都非常依赖于细节


编辑:这在注册表编辑器中,guid与错误消息相同:

在Regedit.exe中导航到HKLM\Software\Wow6432Node\Classes\CLSID并确认您看到了{guid}。如果没有,则必须修复/重新安装Office。最典型的问题是您更改了解决方案平台,而不是正确的项目设置。使用“项目>属性>生成”选项卡>平台目标=x86。@Hans,我找到了您指定的guid(请参见我编辑的图像)。另外,我按照您的指示进行了项目设置,它已经更改为x86,我今天早些时候更改了它。任何其他建议?更改调试和发布配置的属性。并获得另一个诊断,使用SysInternals的进程监视器。您将看到您的程序正在搜索该注册表项,但找不到它。即使安装了Office 2007,也无法确定PIA是否正确。对于2007年,这些是可选的,需要在自定义安装中明确选择。您在GAC中找到PIA了吗?那么,您已经通过COM选项卡设置了对PIA的引用(版本12!)?您需要删除对“工具”的任何引用,即VSTO。这些在WPF环境中无效。那么请告诉我们导致错误的代码。