CLR 库编译但 C# 调用返回错误 CS0103,即使存在已编译的元数据

问题描述

我有一个带有类库 (C#) 和 CLR 类库 (C++) 的 Visual Studio 解决方案。 CLR 类库正确构建,就像头文件一样简单:

public ref class CLRClass
{
public:
    static void CLRMethod();
};

cpp 只实现了一个空的CLRMethod。在 C# 库中,我添加了对 CLR 项目的引用,我只是调用了 CLR 方法

CLRClass.CLRMethod();

C# 库未构建,返回错误

错误 CS0103:当前上下文中不存在名称“CLRClass”

但令人惊讶的是,如果我在 Visual Studio 中的 CLRClass 上按 F12,它确实将我带到了 dll 中编译文件的正确元数据,表明 CLR 库已正确编译并可访问:>

public class CLRClass
{
  public CLRClass();

  public static void CLRMethod();
}

我不明白元数据是如何访问的,但是在编译 C# 库时我收到了 CR0103 错误,关于如何解决这个问题有什么建议吗?

解决方法

这是 C# .Net 目标框架版本的问题。请注意,您的参考中有此警告: Warning in CLRLibrary that contains the CLRClass

这是因为 C# 类库的目标框架版本 (4.7.1) 比 C++/CLI 框架 (4.8) 的框架版本旧。只需重新定位您的 C++ 库。