Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.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# 类未注册-AxMicrosoft.Office.Interop.OutlookViewCtl.AxViewCtl_C#_Winforms_Outlook - Fatal编程技术网

C# 类未注册-AxMicrosoft.Office.Interop.OutlookViewCtl.AxViewCtl

C# 类未注册-AxMicrosoft.Office.Interop.OutlookViewCtl.AxViewCtl,c#,winforms,outlook,C#,Winforms,Outlook,我正在尝试升级一个旧的应用程序。为了降低复杂性,我目前已将应用程序升级到Dotnet V2.0。该应用程序有一个使用“AxViewCtl”的outlook模块。我无法在运行时加载此控件,但在“设计”视图中,我可以看到outlook邮件正在填充 每次运行应用程序时,都会出现以下错误 类未注册(HRESULT的异常:0x80040154(REGDB_E_CLASSNOTREG)) 堆栈跟踪: at System.Windows.Forms.UnsafeNativeMethods.CoCrea

我正在尝试升级一个旧的应用程序。为了降低复杂性,我目前已将应用程序升级到Dotnet V2.0。该应用程序有一个使用“AxViewCtl”的outlook模块。我无法在运行时加载此控件,但在“设计”视图中,我可以看到outlook邮件正在填充

每次运行应用程序时,都会出现以下错误

类未注册(HRESULT的异常:0x80040154(REGDB_E_CLASSNOTREG))

堆栈跟踪:

    at System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(Guid& clsid, Object punkOuter, Int32 context, Guid& iid)
   at System.Windows.Forms.AxHost.CreateWithoutLicense(Guid clsid)
   at System.Windows.Forms.AxHost.CreateWithLicense(String license, Guid clsid)
   at System.Windows.Forms.AxHost.CreateInstanceCore(Guid clsid)
   at System.Windows.Forms.AxHost.CreateInstance()
   at System.Windows.Forms.AxHost.GetOcxCreate()
   at System.Windows.Forms.AxHost.TransitionUpTo(Int32 state)
   at System.Windows.Forms.AxHost.CreateHandle()
   at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   at System.Windows.Forms.AxHost.EndInit()
   at App.frmOutlook.InitializeComponent() in d:\App\Forms\frmOutlook.cs:line     212
   at raft.raftlegal.frmOutlook..ctor() in d:\App\Forms\frmOutlook.cs:line 37
   at raft.raftlegal.RaftLegal.Form1_Load(Object sender, EventArgs e) in d:\App\Main.cs:line 3231

当谷歌搜索上述细节时,我知道DLL有问题。我注册了所有相关的DLL,但我总是收到相同的错误。请你协助我解决这个问题。如果您需要更多详细信息,请发表意见,我们将尽快提供。

我在Visio control中遇到了非常类似的情况。该项目是在一台32位计算机上使用Visio 32位创建的,然后在另一台64位计算机上使用Visio 32位运行的。由于该项目是以“任意CPU”的形式构建的,因此它在64位机器上以64位进程启动,无法加载32位Visio。同时,VisualStudio安装为32位,能够很好地将32位Visio控件加载到设计环境中

在我明确地将项目目标更改为x86之后,一切都得到了修复。如果安装了Office 64位版本,则必须将构建目标更改为x64才能成功。如果上述更改平台目标的建议不适用于您,请再次仔细检查,以确保您安装的MS Office的位掩码与您的项目目标的位掩码一致。如果你做了正确的选择,我相信它会修复的

将解决方案部署到客户端时也要注意这一点:对于任何使用MS Office ActiveX组件的项目,都应该维护两个版本:x86和x64。用户应明确选择与其安装的MS Office版本相对应的应用程序的正确版本,以使其正常工作


我相信@HansPassant的评论正是对这个问题的正确回答。所有的积分都应该给他。

如果它在设计视图中工作,那么最可能的问题是你的应用程序在64位模式下运行。它不会在设计视图中显示,VS是一个32位进程。右键单击您的EXE项目>属性>生成选项卡>平台目标=x86。@HansPassant也尝试过,但错误仍然存在。