【问题标题】:CLR library compiles but C# call returns error CS0103 even with existing compiled metadataCLR 库编译,但 C# 调用返回错误 CS0103,即使使用现有的编译元数据
【发布时间】:2021-09-01 15:03:35
【问题描述】:

我有一个带有类库 (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 错误,有什么建议可以解决这个问题吗?

【问题讨论】:

  • 显示 .csproj 的相关部分。这可能与您导入 C++ 引用的方式有关。
  • 感谢您的回答!这是一个 .Net Framework 问题,这些库针对不同的框架,可能与 .csproj 我们得出了相同的结论,谢谢!

标签: c# c++ visual-studio clr


【解决方案1】:

这是C# .Net Target Framework 版本的问题。请注意,您的参考中有此警告:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多