问题标签 [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.

0 投票
8 回答
15445 浏览

c# - 在 C# 中的任意起始索引上初始化数组

是否可以在 c# 中初始化一个数组,例如,子索引 1?

我正在使用 Office 互操作,每个属性都是从 1 开始的对象数组(我假设它最初是在 VB.NET 中编程的),你不能修改它,你必须设置整个数组才能接受变化。

作为一种解决方法,我正在克隆原始数组,修改该数组,并在完成后将其设置为一个整体。

但是,我想知道是否可以创建一个新的基于非零的数组

0 投票
1 回答
2129 浏览

interop - ADODB 互操作问题

我们在 vb 6.0 中有项目 PrjDb.dll,它引用了 ado 2.5。该项目是在机器 A 上构建的。现在,当我们在另一台机器 B 上为 PrjDb.dll 生成互操作时,我们最终会得到一个新的 ADODB.dll,版本字段中的版本为 2.5,而不是将其与主互操作程序集 adodb.dll 链接(在“Program Files\Microsoft.NET\Primary Interop Assemblies”下找到)。问题是当我部署我的应用程序时,它现在要求这个新生成的 adodb.dll。而且我不想发货。

即使我在命令行中提供了 adodb.dll 路径,它仍然会为 AdoDB 生成新的互操作。我尝试使用开关 /strict 然后它说它无法使用我希望它使用的 AdoDB.dll 解析引用。

如果我们在构建 PrjDb.dll 的同一台机器上生成互操作,则不会发生这种情况。而不是在机器 B 以外的任何机器上,它会自动为 AdoDB 选择 PIA。

当我们为 PrjDb.dll 生成互操作时,知道机器 B 上发生了什么吗?

0 投票
1 回答
5878 浏览

.net - 如何使用 64 位 COM 互操作构建 64 位 .NET DLL?

我需要构建一个针对 x64 的托管 DLL,并通过 x64 COM 公开它。我需要一个演练,好文章,等等......

互操作相当简单,但是当您在双方都谈论 x64 时,我找不到任何东西。

0 投票
2 回答
401 浏览

com - 使用 COM 互操作处理对象生命周期的最有效方法是什么?

我有一个 Windows 工作流应用程序,它使用我为 COM 自动化编写的类。我正在使用 COM 从我的课程中打开 Word 和 Excel。

我目前正在我的 COM 助手中实现 IDisposable 并使用 Marshal.ReleaseComObject()。但是,如果我的工作流程失败,则不会调用 Dispose() 方法,并且 Word 或 Excel 句柄保持打开状态并且我的应用程序挂起。

这个问题的解决方案非常简单,但不仅仅是解决它,我想学习一些东西并深入了解使用 COM 的正确方法。我正在寻找“最佳”或最有效和最安全的方式来处理拥有 COM 句柄的类的生命周期。模式、最佳实践或示例代码会有所帮助。

0 投票
2 回答
294 浏览

interop - 是否可以对互操作程序集进行代码覆盖率分析?

我也在 MSDN 论坛上问过这个问题,但没有找到解决方案:

http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=3686852&SiteID=1

正如我所看到的,这里的基本问题是互操作程序集实际上不包含任何可以检测的 IL(可能除了一些委托之外)。因此,尽管我可以将一个测试项目组合在一起来练习互操作层,但我无法了解我实际调用了多少这些方法和属性。

计划 B 是编写一个代码生成器,该生成器创建一个 RCWW(运行时可调用包装器包装器)库,并为代码覆盖目的进行检测。

编辑:@Franci Penov,

是的,这正是我想要做的。交付给我们的 COM 组件构成了一个包含大约十几个 DLL 的库。3000种。我们在我们的应用程序中使用该库并负责测试该互操作层,因为向我们提供库的小组只进行了最少的测试。代码覆盖率将使我们能够确保所有接口和 coclass 都得到执行。这就是我正在尝试做的所有事情。我们有单独的测试项目来运行我们自己的托管代码。

是的,理想情况下,COM 服务器团队应该测试和分析他们自己的代码,但我们并不生活在一个理想的世界中,我必须根据他们的工作交付高质量的产品。如果可以生成一份测试报告,表明我已经测试了他们 80% 的代码接口并且其中 50% 的代码接口没有像宣传的那样工作,那么我可以在需要修复的地方完成修复,而不是解决问题。

您提到的模拟层会很有用,但最终不会实现测试互操作层本身的目标,而且我当然不想手动维护它——我们受 COM 人员的摆布接口的变化。

就像我上面提到的那样——下一步是为包装器生成包装器,并为测试目的检测这些包装器。

0 投票
15 回答
136254 浏览

python - 如何从剪贴板读取文本?

如何使用 python 从(windows)剪贴板中读取文本?

0 投票
3 回答
1518 浏览

c# - Excel 加载项访问冲突

使用 c#、VS2005 和 .NET 2.0。(XP 32 位)这是一个 Winforms 应用程序,由 VBA 插件 (.xla) 通过互操作库调用。这个应用程序已经存在了一段时间,并且在我的开发机器以外的任何地方编译和执行程序集时工作正常。在开发时,它会严重崩溃(在调试器中并只是运行对象),并出现“EXCEL.EXE 中 0x 处的未处理异常...:0x...违反读取位置 0x...

但这是奇怪的部分:

我界面中的第一个方法工作正常。所有其他方法都如上所述崩溃。这是代码的近似值:

这似乎是某种环境的东西。注册表混乱?可能是代码错误,但在其他地方可以正常工作。

0 投票
2 回答
2227 浏览

c# - BITS 最好的免费 C# 包装器是什么?

BITS,Windows 后台智能传输服务。

看起来有一些 C# 包装器可以管理与 BITS 的互操作,有人对最好的有任何意见吗?

0 投票
1 回答
623 浏览

.net - 是否有 .NET 性能计数器来显示 p/invoke 调用的速率?

是否有 .NET 性能计数器来显示 p/invoke 调用的速率?我刚刚注意到我正在调试的应用程序正在一个紧密循环中从托管土地调用本机代码。预期的实现是进行一次 ap/invoke 调用,然后进行缓存。我想知道我是否可以通过 CLR Interop 或 Remoting .NET 性能计数器注意到这个错误。有任何想法吗?

0 投票
1 回答
2434 浏览

.net - 如何将二进制数据流式传输到 .NET 中的标准输出?

我正在尝试将二进制数据流式传输到 .NET 中的标准输出。但是,您只能使用 Console 类编写 char 。我想将它与重定向一起使用。有没有办法做到这一点?