【发布时间】:2018-03-02 01:08:13
【问题描述】:
对于完整的 .NET 项目,您可以勾选一个框以使项目 COM 在 Project Properties > Application tab > Assembly Information.. 中可见:
但是,.NET Standard 项目不存在Assembly Information.. 按钮,而是在Project Properties > Package tab 上输入数据,但该选项卡没有Make Assembly COM-Visible 的复选框:
您还能通过其他方法使 .NET Standard 库 COM 可见,还是出于某种原因这样做没有意义?
【问题讨论】:
-
.NET 标准是跨平台的,而 COM 是特定于平台的。您希望两者如何合作?
-
@ZdeněkJelínek 嗯,这是一个非常有趣的问题——距离我上次做 COM 已经过去了大约十年,但我认为 COM 互操作是库外部的,即它构建了一个定义COM 然后用来与库对话的接口/包装器。 IE。我认为该库仍然可以是跨平台的,但包装器将是 Windows 特定的。也许我需要为我的 .NET Standard 库编写一个完整的 .NET 库包装器……这听起来真是个坏主意!
-
拒绝选民发表评论?我很感激对于完全理解所有这些的人来说答案可能是显而易见的,但是随着越来越多的人希望将他们的代码移至 .NET Standard 并且仍然希望使该代码可用于遗留系统,这似乎是一个问题被问过并且还没有被问过吗?
-
Microsoft 有时会忽略 Visual Studio 中的“视觉”。但不是在像这样的基本对话框中。它大喊“[ComVisible] 不标准!”相当响亮。你希望从那里去哪里?如果您不告诉我们您为什么绝对需要它,并提供一些证据证明您知道如何避开冰山和鱼雷,那么没有人可以为您提供替代方案。
-
@HansPassant 感谢您的反馈。我们在当前完整的 .NET 共享库中有通用代码。我们希望将它们转换为 .Net 标准,以便我们可以跨多个平台(EF Core、Xamarin 和完整的 .NET)使用这些库。这些库也被一些 VBA 东西通过 COM 使用,因此希望使 COM 可见性适用于这些库。我不认为 COM Visibility 对编译的库代码有很大的影响,我认为您只需要在代码中添加一些属性,然后该设置意味着在您构建时会生成一个单独的 tlb COM 包装器?
标签: .net-standard