C# 类库的导出在 Visual Studio 2019 中失败



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

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

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

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

当我尝试编译类库时,我遇到了此错误:

"DllExportAppDomainIsolatedTask"任务意外失败。 System.ArgumentException:找不到请求的值"Version47"。

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

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

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

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

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

最新更新