问题标签 [comvisible]

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 投票
0 回答
333 浏览

vb.net - 将 COM 可见事件添加到 VB.NET 类的最快方法是什么?

COM将可见事件添加到VB.NET类的最快方法是什么?

Visual Studio 工具箱中是否有一些东西,或者有没有macro可以做到这一点?

我正在使用VS2005.

编辑:在这篇文章http://msdn.microsoft.com/en-us/library/dd8bf0x3(v=vs.80).aspx中,GuidAttribute指定了 a 。这是程序员在设计时生成的,还是需要它来匹配其他地方的 GUID?

0 投票
2 回答
324 浏览

c# - SoapException 未在 ComVisible 类中捕获

我正在.NET 中开发一个 ComVisible 库,然后在旧的 VB6 类中调用它。我在课堂上主要做的是调用 Web 服务、解析响应并返回包含必要数据的对象。Web 服务被设计为返回一个SoapExceptionif 调用错误的参数。这是我的代码的一部分:

一旦我尝试使用正确的参数从我的 VB6 代码中调用此方法,我就会得到正确的答复。但是,如果我用错误的参数调用它,我会在我的 VB6 程序中收到-245757( Object reference was not set to an instance of an object) 运行时错误,而且它似乎没有被catch我的 C# 代码中的子句捕获(虽然我希望该方法返回一个ReplyObject带有填充字段的空字段) Error.

我创建了一个测试 C# 项目并复制了相同的方法(即我从 .NET 平台内调用相同的 Web 服务),我可以确认在这种情况下SoapException它被正确捕获。

这种行为是故意的吗?有没有办法SoapException在 ComVisible 类中捕获 (因为我真的想将错误消息包含到我的回复对象中)?

UPD:我的 VB6 代码如下:

0 投票
2 回答
31450 浏览

c# - [ComVisible] 默认和公共类 COM 暴露是怎么回事?

MSDN 有这篇关于[ComVisible]属性的文章。我不太明白当一个集合时会发生什么[ComVisible(true)]

MSDN 说

默认值为 true,表示托管类型对 COM 可见。使公共托管程序集类型可见,不需要此属性;默认情况下,它们对 COM 可见。只能使公共类型可见。

所以他们说公共类型默认对 COM 可见。但他们也说只有公共类型可以通过设置可见[ComVisible(true)]。这没有意义:如果公共类型默认可见,那么设置如何[ComVisible(true)]使公共类型可见?如果它们已经可见,它们将如何变得更加可见?

也许我的理解不正确。如果有人能对上述陈述有所了解,我将不胜感激。

0 投票
2 回答
1172 浏览

.net - 如何判断 DLL 是否为 ComVisible?

我有一个 DLL,它的 ComVisible 属性可能设置为 true,也可能不设置。我不确定它是如何构建的,或者具有什么属性?我所知道的是它是一个.Net DLL。简而言之,我如何判断它是否是 Com Visible?

抱歉,如果这是重复的。我对这个返回结果的所有搜索都显示了如何使DLL ComVisible。我知道该怎么做。

0 投票
1 回答
1230 浏览

visual-studio-2010 - COMVisible class in VS 2010 assembly still not visible through com

I created a VS 2010 class library. Marked the assembly for Com Visibility. Signed the assembly with a strong key. Created my class, have my entry point method available.

The library works fine from a test project in C#.

I regasm the class library to gac, via: c:\windows\microsoft.net\framework\v4.0.30319\regasm testdll.dll /tlb: testdll.tlb /codebase

Include the tlb file as a reference in my VB6 project. I find it through resources 'browse' so its there.

When i try to instantiate the class... its empty. the public method that should be available via the public class doesn't show.

In addition i tried calling the 'testdll.testclass' via CreateObject, i get the error "ActiveX component can't create object"

Now i have other projects i've done COM visibility for and i've tried comparing the difference, but i don't see any. I can't understand why it isn't working.

Any clues??? tx very much.

0 投票
1 回答
1421 浏览

c# - 使用 CoCreateInstance 从 C++ 调用 C# dll

我的ProjectA是一个C#类库,只有一个类:

我已经检查了Register for com interop使用VS2010哪些为我生成的dll&tlb文件,好的,直到现在。

我的ProjectBWin32 Dll具有单个文件的应用程序cpp

…………………………………………………………………………

…………

我能够编译这个 Dll,直到现在一切看起来都很好。

当我使用我的 Win32 Dll 并尝试在这一行调用 Add 函数时出现问题:

永远不会通过,可能是什么问题,没有正确注册吗?

请协助。

0 投票
1 回答
860 浏览

.net - ClickOnce 应用程序部署和 .NET COM 可见 dll 注册

我有一个 clickonce 应用程序。我需要为该应用程序注册 COM 可见 dll。我在该应用程序的代码中使用了注册,检查它是否已经注册并通过 RegistrationServices 类方法 RegisterAssembly() 进行注册。如果它是由管理员启动的,它工作正常。但我不能要求管理员权限来部署 clickonce 应用程序。我尝试注册的第二种方式是我的 clickonce 的先决条件,这将需要管理员并注册我的 dll。我为我的先决条件应用程序创建了产品清单,但在 clickonce 部署期间出现错误

“安装程序检测到文件'...'自最初发布以来已更改或可能已损坏。”

我发现这是.NET 4.5的问题,我应该签署我的先决条件。我再次签名并由 Bootstrapper 生成清单。之后我在部署过程中遇到以下错误:

“文件不受信任错误:安装程序检测到无法验证文件的发布者”

在成功部署 clickonce 之前,我必须先在目标机器上安装证书。但是在所有目标机器上安装 clickonce 之前是不可能安装证书的。有没有人有任何想法如何解决这个问题?提前致谢。

0 投票
3 回答
1871 浏览

c# - 将字符串中的二进制数据作为 COM 事件参数传递

我正在尝试将二进制数据从 .NET 获取到 FoxPro(一种兼容 COM 的语言)。我有一个 ComVisible 的 .NET 对象和一个带有字符串参数的事件的事件接口。

在下面的示例中,我有一个虚拟实现,它返回一个包含从 0 到 255 的每个连续字符的字符串。在 .NET 端,该字符串适当地存储了每个未被干扰的字符,但是在客户端处理事件时,128 到 154 之间的字符转换为问号。超过 154 个字符再次保持不变。

知道是什么导致了这个问题吗?不幸的是,FoxPro 没有办法在本地表示二进制数据,并且需要在字符串中对其进行curry。

0 投票
1 回答
975 浏览

c# - 为什么 IDisposable 具有 [ComVisible(true)] 属性?

我继承了我工作的大型遗留 ASP.NET 应用程序,我们公司希望我们使用 FxCop 并修复所有主要的违规行为。目前似乎很流行的一条规则如下:

CA1405: COM 可见类型基类型应该是 COM 可见的

看来我们应用程序中的每个 ASP.NET 页面/控件都违反了此规则。起初我不确定为什么,但最终我意识到这是由于以下继承链:

我也意识到IDisposable定义为:

总结一下:所有 ASP.NET 页面/控件都继承自IDisposable,并IDisposable具有该[ComVisible(true)]属性,这意味着所有页面/控件都将不符合此规则。

这伤害了我们,因为我们的应用程序有数千个页面和控件,因此有数千个违规行为。禁用规则不是一种选择,因为我们有一套“公司标准”的 FxCop 规则。似乎 FxCop 想让我们检查一下并将这个属性放在我们应用程序的每个页面上,我真的不感兴趣。

我的问题是,为什么首先IDisposable要有[ComVisible(true)]属性?

0 投票
1 回答
21111 浏览

dll - RegAsm - /codebase 选项何时适用?

我有一个用 C# 编写的 COM 可见 DLL,我想在 VB6 应用程序中使用它。我有两个主要的 DLL 用例,我想知道该/codebase选项何时适用以及何时在 GAC 中注册更好。


用例:

  1. Project > ReferencesDLL 将被加载到另一台开发人员 PC 上,并且需要在菜单下可供 VB6 IDE 访问

  2. 当 VB6 应用程序发布时,DLL 将被加载到生产机器上


任何有关适当使用的信息/codebase都会有所帮助。

谢谢。