regasm netstandard DLL

regasm netstandard DLL

我有一个 C# 项目,我想将其用作其他 .NET 程序集的 .NET Standard 2.0 库和本机代码的 COM 组件。当我以完整的 .NET Framework 为目标时,我可以很好地创建 COM 对象,但是当我创建一个以 .NET Standard 为目标的新项目时,我在尝试注册它时遇到了这个错误:

regasm /codebase /tlb MyLib.dll

RegAsm : error RA0000 : Could not load file or assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The system cannot find the file specified.

如何构建和注册与 .NET Standard 和 COM 兼容的 DLL?

确保安装了 .NET 4.7.1。即便如此,由于 Visual Studio 不会将 NuGet 包复制到输出目录,因此其中一个会出现类似的 "Could not load file or assembly" 错误。

如果您可以接受一个项目但有两个 DLL,这是一个替代方案:在您的 .csproj 中,删除 TargetFramework 行并将其替换为多个目标,根据您的代码需要,对于示例:

<TargetFrameworks>netstandard2.0;net461</TargetFrameworks>

然后COM使用net461 DLL,.NET使用netstandard2.0