【问题标题】:NUnit build error 'Missing compiler required member System.Range.get_Start'NUnit 构建错误'缺少编译器所需的成员 System.Range.get_Start'
【发布时间】:2019-07-03 18:51:32
【问题描述】:

我正在尝试利用 NUIt 和 Newtonsoft JSON 对 API 进行断言。我有一个方法,我从解决方案中的另一个项目调用,这两个项目都在 .NET 4.7.2 上,并且所有 NuGet 包都按照我认为的版本对齐,但我收到以下错误:

CS0656:缺少编译器所需的成员“System.Range.get_Start”

奇怪的是,我在其他地方调用了相同的方法,但没有收到任何构建错误。

我已经阅读了一些资料,似乎它可能与 DLL 有关,但我已经检查过,并且我有必要的 DLL 引用,包括 Microsoft.CSharp 和 System.Core。

我尝试删除、重新添加参考,然后构建甚至删除 bin 文件夹并重新构建 - 似乎没有任何效果。

任何反馈都将不胜感激。

【问题讨论】:

  • 当我将 Microsoft.Extensions.Http v2.1.1 添加到 .Net Core 2.1 Azure Function 项目时,这个确切的错误刚刚开始发生在我身上。删除软件包后问题自行解决。这听起来像是你的问题吗?
  • 我可能会补充一点,我没有安装 NUnit 或 Newtonsoft.Json。我的失败只是出现在看似随机的代码行上:我的一个函数方法的左大括号。很奇怪。

标签: c# .net json.net nunit restsharp


【解决方案1】:

我发现 this GitHub issue 描述了未正确抑制的 C# 8 功能(在本例中为新的索引功能)。就我而言,我在方法定义中复制粘贴了错误的类型(string 而不是JObject),并试图在方法中像这样访问它:

public async Task PostFailureMessage([ActivityTrigger] string input)
{   // I got the error on this line

    string uri;

    // ...
    uri = input["failureURI"].ToString(); // trying to access as a JObject here
    // ...
}

我的解决方案是检查参数类型:string 应该是JObject。该错误消息对于确定问题的根源完全没有帮助。

【讨论】:

  • 我显然是个盲人,我基本上在做同样的事情。我试图以列表/字典的形式访问 IRestResponse 的 Content 属性,所以我将其称为 response["status"]。我通过使用JsonConvert.Deserialize<JObject> 并以这种方式访问​​它解决了这个问题。
  • 抱歉,我刚刚意识到我忘了添加问题的链接。在上面添加。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-28
  • 2011-05-20
  • 1970-01-01
  • 2011-09-26
  • 1970-01-01
  • 2011-09-05
  • 2020-09-04
相关资源
最近更新 更多