VS Code - 如何生成强命名程序集?

VS Code - How can I produce a strongly named assembly?

我有一个用于组装的 class 库。它由三个 classes 组成 - classes A 和 B 为 class C 提供支持类型和方法。从该库构建程序集后,我需要将其注册到广汽集团;目前我为此使用 regasm

  1. 在 VS Code 中构建项目
  2. 使用 csc 从 C# 源代码创建 DLL 文件...我在这里用密钥文件对每个文件进行签名
  1. 使用regasm注册初级程序集(class C)

我的问题是 csc 仅支持最高 5 的 C# 版本。我使用的是我能找到的最新版本的 csc - 它包含在 Visual Studio 文件夹中程序文件(我没有 Visual Studio 的完整安装,只有一些实用程序)。使用第三方软件 (dotPeek),我注意到 csc 创建的程序集针对的是 .NET 3.5;我在我的项目中以 5.0 为目标。它也只引用了我能看到的 class C,尽管 A 和 B 是依赖项。

出于好奇,我查看了 VS Code 的构建输出,并看到了我的项目的 DLL 文件。在 dotPeek 中,它正确地以 .NET 5.0 为目标,并且明确引用了 classes A、B 和 C。唯一的问题是它没有强命名。

我的构建输出中的 DLL 是否正确?如果是这样,我该如何命名呢?

由于服务器环境资源有限,我使用 VS Code。如果我需要使用 Visual Studio,我最好在另一台机器上使用,然后将完成的程序集移植过来。

经过进一步研究,这似乎是一个死胡同。 VS Code 针对 .NET >= 5.0 生成的任何 DLL 都不能与 regasm 一起使用。我需要使用 regasm 为我的 COM objects 创建程序集,所以我必须以较低版本为目标。

“与 .NET Framework 不同,.NET Core 或 .NET 5+ 不支持从 .NET 程序集生成 COM 类型库 (TLB)。指南是手动编写 IDL 文件或用于 COM 接口的本机声明的 C/C++ header。如果您决定编写 IDL 文件,则可以使用 Visual C++ SDK 的 MIDL 编译器编译它以生成 TLB。”。 =13=]

-来自https://docs.microsoft.com/en-us/dotnet/core/native-interop/expose-components-to-com#embedding-type-libraries-in-the-com-host