C# class 库的导出在 Visual Studio 2019 年失败

Export of C# class library fails in Visual Studio 2019

我有一个包含多个项目的解决方案。其中之一是 class 库(C# - .Net Framework),此 dll 需要导出为非托管代码才能在 C++ 项目中使用。 在迁移到 VS 2019 之前,我使用 VS2017 执行此操作并且一切正常,但现在使用 2019 版本我有一些我无法解决的不兼容性。 对于 DLL 导出,我们使用 RGiesecke 的一个名为 "Unmanaged Export" 的库,它在 VS2017 中完美运行。

为了解决这个问题,我尝试将.Net Framework 的版本降级到4.6.2 和4.0。我试图降级包的版本,但都不起作用。 自 3.5 版本以来,我安装了所有 .Net Framework 版本。

这是导出函数的代码示例。这在 VS2017 4.6.2 .Net 版本中完美运行!

namespace ExampleExp
{
    public class ExportInterfaceEx
    {

        [DllExport(CallingConvention = CallingConvention.Cdecl)]
        public static int Start()
        {
            return 5;
        }

    }
}

我在尝试编译 class 库时出现此错误:

The "DllExportAppDomainIsolatedTask" task failed unexpectedly. System.ArgumentException: Requested value 'Version47' was not found.

我自己也遇到过同样的问题。

我在这方面找到的最佳信息就在这里; https://github.com/3F/DllExport/issues/29

建议您首先确保拥有最新版本的 UnmanagedExports(NuGet 商店目前为 1.2.7)。您可以尝试按照此线程中的建议安装构建工具,尽管为 VS2015 和 VS2019 安装上述工具对我不起作用。

对我来说,将项目的目标 .NET 框架降低到 .NET 4.5 可行,但不适用于 4.7.2...

您可以使用 DllExport 代替 UnmanagedExports,因为它已过时。