- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试将 C# 应用程序的平台目标从 x86 更改为任何 CPU。我的应用程序使用 _click 方法运行一个新线程,该线程使用以下方法打开查看器窗口以显示窗口:
public void Show(string url, int entityId, string sessionId, int projId, string docId)
{
base.Show();
try
{
this.DocViewer.InitComm(url, entityId, sessionId, projId, docId);
}
catch (Exception ex)
{
Logger.Error("Error opening viewer", ex);
throw;
}
}
在 x86 平台上运行时,应用程序可以正常运行。我将平台更改为“Any CPU”并收到“COMException was unhandled”错误:“Class not regisered (Exception from HRESULT: 0X80040154 (REGDB_E_CLASSNOTREG))”突出显示:
base.Show();
我已经研究了这个错误的原因,似乎是由于 registry redirection .因为我使用的是 .NET 3.5,所以我无法使用我找到的许多解决方案,包括来自 this thread 的解决方案。所以。我的资料怎么弄不清楚here可能会有帮助,因为许多指向代码的链接都是用 C++ 编写的。
如果有人能为我提供见解,我将不胜感激。
最佳答案
这是完全正常的事故。很明显,您依赖于 COM 服务器,他们非常关心您的程序是在 32 位还是 64 位模式下运行。 COM 服务器是用 native 代码编写的,通常是 C++,并且在 64 位模式下需要不同风格的 native 代码。
如果它是 Windows 的一部分并且不是太旧,您只能指望拥有这样一个 COM 服务器的 64 位版本。但其中绝大多数是第 3 方产品,并且仅提供 32 位版本。如果它是您自己的,那么您必须构建它的 x64 版本,如果它是第 3 方,那么您将不得不使用电话。我们无法帮助您找到号码。如果您需要提示,请查看项目的程序集引用并查看文件的属性,很有可能您会在版权声明中看到供应商名称。
关于c# - 将 x86 平台更改为 Any CPU for .NET 3.5 抛出 COMException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30718369/
我是一名优秀的程序员,十分优秀!