gpt4 book ai didi

c# - 安装 OpenXML 文件转换器

转载 作者:太空宇宙 更新时间:2023-11-03 16:52:01 25 4
gpt4 key购买 nike

我已经用 C# 编写了一个托管的 OpenXML 文件转换器,但我在部署时遇到了问题。对于部署,我使用的是 VS 安装项目。

我想我的第一个问题是,我看到有些人使用类库,而其他人则使用 Windows 应用程序作为 COM 服务器。对任何一个都有偏好吗?我的转换器依赖于不在 GAC 中的库。

关于注册 COM 服务器,以下帖子:http://blogs.msdn.com/b/speront/archive/2009/04/17/9553717.aspx

建议将其添加到托管 EXE 的 Main() 中:

Application.OleRequired();
MyConverter converter = new MyConverter();
Application.Run();

这不适用于设置项目。如果我先手动运行 EXE,这确实有效。

我试过运行重高潮:

regasm MyConverter.dll,成功,但是当 Microsoft Word 尝试使用转换器时,出现错误“Word 无法启动转换器 MyConverter 文档”

接下来,我尝试创建一个 Windows 应用程序并使用:

public static void Main(string[] args)
{
Guid guid = new Guid("EFADDB5B-933E-49FE-B3C8-F6FD7FB1B788");

RegistrationServices regSrv = new RegistrationServices();

regSrv.RegisterTypeForComClients(typeof(MyConverter), ref guid);
}

最后,我尝试了:

regasm /regfile:test.reg MyConverter.dll

然后导入注册表文件。

所有这些都给出错误:“Word 无法启动转换器 MyConverter 文档”

我的转换器在 Office\12.0\Word\Text Converters\OOXML Converters\Import 中有正确的注册表项

转换器已成功运行。只是部署在任何实例下都不起作用。

最佳答案

如果您正确设置了转换器,它可能会在 Word 尝试启动它时引发未处理的异常。要弄清楚异常是什么,用 try/catch block 包装所有接口(interface)方法并记录异常堆栈跟踪可能是个好主意:

public void HrImport(
string bstrSourcePath,
string bstrDestPath,
IConverterApplicationPreferences pcap,
out IConverterPreferences ppcp,
IConverterUICallback pcuic)
{
try
{
// code to import document
}
catch (Exception ex)
{
// log the exception
//
System.Diagnostics.Trace(ex.ToString());
}
}

关于c# - 安装 OpenXML 文件转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3602528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com