问题标签 [com-interop]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
visual-studio-2008 - VS 2008 中的 Wrapper Assembly Key File 设置在哪里?
我正在尝试构建一个强命名的应用程序。它引用了我通过“添加引用”对话框添加的 COM 互操作库。已经有一段时间了,但我似乎记得在旧版本的 Visual Studio 中,有一个Wrapper Assembly Key File的项目设置。我似乎在 Visual Studio 2008 中找不到它?
asp.net - 如何管理各种 ASP.NET 网站项目引用和自动更新
我的解决方案中有一个 Visual Studio 2008 网站项目,其中包含许多其他程序集项目。
网站项目有 4 种类型的引用:项目、bin、COM 互操作和文本文件。
该项目完美地引用了自动更新。
托管 DLL 的 bin 引用使用 .refresh 文件自动更新,这些文件运行良好并且可以检入 Visual SourceSafe。
我的问题是关于如何管理其他两种类型 - COM 互操作和文本文件。
我有一个 OCX,当作为参考添加时,它会创建一个没有 .refresh 文件的互操作 DLL。将互操作 DLL 检查到 VSS 中是不可取的,因为您必须在构建时检查它。将互操作 DLL 移动到另一个位置以直接引用不起作用,因为我需要对我的程序集进行强命名,在这种情况下这需要原始 OCX。互操作引用甚至不会显示在“属性页”>“引用”页面上。
如何让它正确自动更新?如何制作合适的 .refresh 文件?
我有纯文本文件,其中包含其他托管 DLL 引用的许可证。我创建了似乎适用于 VS2008 和 VSS 的 .refresh 文件,但不是自动为我创建的。
我应该如何以适用于 VSS 的方式包含引用?
签入 bin 目录中的许可证文件会导致同样的问题,即必须在每次构建时签出它们。
vb.net - 如何使用后期绑定调用带有 ByRef 参数的方法
我有一个 COM 组件,我想使用 VB.NET 的后期绑定来调用它(使用痛苦的 Primary Interop Assembly - PIA 方法)
我的 COM 方法的 IDL 签名如下所示:
所以 VB.NET 术语中的 2 个“ByRef”参数和一个返回值。
我尝试像这样调用这个方法:
这失败了一个异常:{“无效的被调用者。(来自HRESULT的异常:0x80020010(DISP_E_BADCALLEE))”}
我认为这意味着我在 parameterMods 数组中做错了。因为如果我注释掉将 ParameterMods 数组的任何值设置为“True” - 它会起作用。它当然不会更新 [out] 参数的参数,因此它没有按预期工作。
由于该方法也有返回值,还有其他需要考虑的吗?MSDN 示例几乎完全符合我的要求,只是该示例没有返回值。任何帮助表示赞赏。
web-services - 第一次从 ASP.NET Web 服务打印时 Excel 挂起
我们在 ASP.NET 网络服务中使用 Excel 将 SpreatSheetML 转换为 XLS。此外,如果用户选中了正确的复选框,我们会生成一个使用 Excel 打印电子表格的线程。
最近,我们在一个新环境中部署了应用程序,然后我们开始遇到问题:第一次尝试打印时,Excel 似乎挂在服务器上 - 即对PrintOut
工作簿上的方法的调用永远不会返回。
但是,如果我们以应用程序池身份登录服务器并打开 Excel,向打印机发送一些内容,然后再次关闭它,则打印将从那时开始工作!
我怀疑 Excel 正在显示invisible dialog
- 症状与我们之前的症状相同,当时 Excel 似乎停滞在 Excel 打开时出现的“无法使用对象链接和嵌入”对话框上。
我知道使用服务器端办公自动化不好,但这是一个很难更改的遗留应用程序,所以请不要只建议我重新设计我们的解决方案。
有没有人有过这种行为的经验?
c# - COM 互操作、隔离和排除重复引用
我们在我们编写的 C# dll (Assembly A) 中使用 Microsoft 提供的 COM DLL (dsofile.dll)。为了避免注册 COM dll,我已将 dsofile.dll 引用上的独立属性切换为 true。
这意味着当我们编译我们的 dll 时,Visual Studio 会将 dsofile.dll、Interop.DSOfile.dll 和 Native manifest 文件复制到我们解决方案的 bin 文件夹中,并且应用程序可以在没有注册 dsofile.dll 的情况下运行。
这种方法在一个小型测试应用程序中是成功的。
然而,在实际应用程序中,程序集 A 被我们的一些其他 dll(程序集 B 和程序集 C)和应用程序 EXE 引用。当本机清单文件和互操作 dll 被复制到应用程序的 bin 文件夹时,每个文件的不同副本被使用,因为每个引用我们的第一个 dll 的 dll 都会创建自己的副本。
这会导致文件的多个副本显示为安装项目中的引用(即来自 Assembly A、B 和 C 以及 EXE 文件夹的 dsofile.dll,来自 Assembly A、B 和 C 以及 EXE 文件夹的 Interop.DSOFile.dll, Native.Assembly A.manifest 来自 Assembly A、B 和 C 以及 EXE 文件夹)和编译器警告(“两个或多个对象具有相同的目标位置”)。
此外,如果复制到最终文件夹中的 manifest 和 interop dll 不是直接来自 Assembly A 文件夹(因为重复文件相互覆盖),则应用程序无法成功加载 COM DLL。
我被迫从设置依赖项中手动排除文件的重复副本,但是当重新加载或重建解决方案时它们会重新出现。
谁能提供更好的方法来实现 COM dll 的隔离部署?如果可能的话,我还想嵌入清单,但到目前为止我还没有成功。
作为替代方案,我一直在研究使用 EnvDTE for Visual Studio Automation 排除重复副本的任务的自动化,但无法发现如何以允许我识别和排除它们的方式访问检测到的依赖项节点。使用 UIHierarchyItem 界面访问它们会将安装项目的名称显示为每个文件的名称属性,并且没有排除选项。
任何意见,将不胜感激。
.net - 什么导致错误 HRESULT: 0x80010105 (RPC_E_SERVERFAULT)?
我创建了一个 ASP.NET Web 服务,它使用第 3 方支付处理引擎来授权信用卡交易。
Web 服务托管在单独的应用程序服务器上,并通过 ActiveX 对象(.ocx
扩展)连接到支付处理服务器。HRESULT: 0x80010105 (RPC_E_SERVERFAULT)
最近,当我尝试使用“ IsAvaiable
”检查建立与应用程序的连接时,它一直在生成异常。
有没有人推荐一个开始研究这个问题的好地方?
(我知道联系供应商将是第一选择,但我想在联系技术支持之前让我的“鸭子排成一排”)
c# - 通过 COM 互操作将字节数组从 C# 返回到 VBScript
我有 C# 方法,它返回一个我希望能够从 VBScript 访问的字节数组。或多或少:
和 vbscript 看起来像:
我迷路了。谷歌不想合作......我希望这里有人能提供帮助!
抢
.net - 为 COM 互操作性注册我的 .net 程序集不会公开我的方法
好吧,我要疯了。我一直在尝试使一个简单的.net 程序集可见以用作 COM 对象,但它不起作用。我一直在尝试很多不同的方法,但都没有奏效。到目前为止,我得到的最接近的是属性、接口、手动注册等最少的那个。
我有一个 vbscript 作为测试,如下所示:
我的 c# 代码如下所示:
在我的项目(VS2008)上,我选择了“使程序集 COM 可见”——它向我的 AssemblyInfo.cs 添加了一个属性,我还检查了“注册 COM 互操作”。
我可以看到 ProgId 真的没有什么区别(无论如何在我的情况下) - 只要我指定真正的名称空间+类名,我可以覆盖它,我认为这很好。
问题是 - 我的 CreateObject 运行良好,但找不到方法 Test()。事实上,如果我使用 dll 并提取 tlb 并期望我根本看不到任何方法。
我得到的错误是这样的:
C:\inetpub\wwwroot\ASPTest\testrun.vbs(3, 1) Microsoft VBScript 运行时错误:对象不支持此属性或方法:“测试”
我很想得到任何反馈,但只是为了让你知道我一直在尝试什么。我在类上搞乱了 Guid 和 AttributeGuid,在类上明确定义了 COMVisible,我尝试不注册 COM 互操作,而是做了 regasm /codebase /regfile。
最后一点-我的大多数测试都围绕未签名的程序集展开,但试图查明我尝试使用强名称/密钥的错误,但它没有做任何事情。
谁能帮我找出问题,好吗?
c# - 无法在 C# 中实例化 COM 组件 - 错误 80070002
我正在尝试在我的机器上实例化一个 Windows Media Player COM 对象:
执行最后一行时,出现以下错误:
相同的代码适用于其他开发人员机器和最终用户机器。出于某种原因,它只在我的机器上失败。可能是什么原因?
c# - 来自 C# 类的 VB 6.0 中的自动化错误
我创建了一个 C# 类库,并通过 VB 6.0 应用程序使用它。但是当我尝试调用任何方法(返回一个字符串)时,它会给我一个自动化错误。否则 C# 类运行良好。
知道为什么吗?