【问题标题】:Reference to type '(, )' claims it is defined in 'mscorlib', but it could not be found对类型 '(, )' 的引用声称它是在 'mscorlib' 中定义的,但找不到
【发布时间】:2020-09-22 19:59:33
【问题描述】:

我在 VS 2019 中突然在我的 wpf 项目中收到此编译时错误,到目前为止它运行良好。

错误:严重性代码描述项目文件行抑制状态 错误 CS7069 对类型“(,)”的引用声称它在“mscorlib”中定义,但找不到

如果我在 VS 2017 中运行相同的项目,它工作正常,我尝试了很多事情,比如清除临时文件,重新克隆我的代码库,但没有任何帮助。我没有从错误中得到它声称的类型为“(,)”。

有人可以帮助我这是什么问题,为什么我只能在 VS2019 中而不是在 VS2017 中以及任何解决此问题的方法。我已经花了很多时间,任何帮助都将不胜感激。

【问题讨论】:

标签: .net visual-studio-2019


【解决方案1】:

System.ValueTuple 包安装到您的项目中。这就是可能导致您出错的原因。

【讨论】:

    【解决方案2】:

    除了 AngryHacker 的建议,确保如果您有多个项目,它们的 .NET 版本都匹配。

    在我的例子中,我有一个使用 .NET Framework 4.7.2 构建的项目,我在其中定义了一个返回 ValueTuple 的方法,然后我从另一个使用 .NET Framework 4.6.1 构建的项目中调用了该方法。在将项目的 .NET 版本从 4.6.1 升级到 4.7.2 并重新启动 VisualStudio 后,我能够构建代码。

    【讨论】:

      【解决方案3】:

      当您不在 VS2017 中时,您在 VS2019 中得到此问题的原因是,在构建过程中,您的项目中包含了较新版本的 System.ValueTuple

      您可以通过构建诊断日志并在日志中查找 System.ValueTuple 来找到它的位置。我遇到了这个问题,发现了这个:

      Copying file from "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.ValueTuple.dll"

      通过您的构建日志,您应该能够找到在您的项目中修复它的位置,但正如@angryhacker 在他的回答中提到的一种方法是在您的项目引用中明确包含您的项目期望的System.ValueTuple,或者在您的项目中安装 Nuget 包。

      @sean-killian 描述了版本可能不同意的另一种方式。编译错误很隐秘,但您应该会发现在引用的代码行中,System.ValueTuple 类型正在您的代码或您正在调用的函数的签名中使用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-08
        • 2019-02-21
        • 1970-01-01
        • 1970-01-01
        • 2018-09-12
        • 2018-10-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多