And*_*sen 21 .net c# .net-core
在开发.NET Core 2.0应用程序时,我遇到了条件断点,监视评估和即时窗口评估的问题.我收到以下错误:
modifiers.GroupBy(c => c.Modifier.Group).ToList()
抛出类型'System.ArgumentException'的异常
数据:{System.Collections.ListDictionaryInternal}
HResult:-2147024809
HelpLink:null
InnerException:null
消息:"无法评估安全功能."
ParamName:null
源:null
StackTrace:null
TargetSite:null
什么可能导致这个问题?有解决方法吗?这在.NET Framework 4.x应用程序中运行良好.
编辑:添加代码示例
使用以下类:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Group { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在正常的控制台应用程序中,以.NET Core 2.0为目标:
static void Main(string[] args)
{
var people = new List<Person>
{
new Person { Age = 17, Name = "Person A", Group = "Group A" },
new Person { Age = 20, Name = "Person B", Group = "Group A" },
new Person { Age = 23, Name = "Person C", Group = "Group A" },
new Person { Age = 17, Name = "Person D", Group = "Group B" },
new Person { Age = 25, Name = "Person E", Group = "Group B" },
new Person { Age = 40, Name = "Person F", Group = "Group B" },
};
// Make sure that System.Linq gets loaded
people.Where(c => c.Name == "Person A").First();
}
Run Code Online (Sandbox Code Playgroud)
初始化后设置断点List<Person>
.在即时窗口中,尝试评估一个GroupBy
或一个Where
不是简单的等式检查,它将抛出一条ArgumentException
消息"无法评估安全功能".
几个例子是:
people.Where(c => c.Name.Contains("F")).ToList()
people.GroupBy(c => c.Group).ToList()
Run Code Online (Sandbox Code Playgroud)
注意: watch语句似乎在Visual Studio Code中有效,但在Visual Studio 2017 Preview 3中没有.
该错误似乎是由于即时窗口不允许任何可能导致副作用的窗口.通常的副作用被允许在即时窗口...但它不喜欢GroupBy
的List<T>
(而GroupBy
上T[]
是可以容忍的)
我用你的例子再现了.
people.GroupBy(c => c.Group).ToList()
投掷
people.Where(c => c.Name.Contains("F")).ToList()
没有.
它并没有要求一个条件断点.我的测试是使用全新的.net核心2.0项目调试任何CPU构建.这是VS Pro 2017 v15.3.1的稳定版本
要解决此问题,请将列表副本复制到数组中:
people.ToArray().GroupBy(c => c.Group).ToList()
我还建议向MS提交错误报告.
归档时间: |
|
查看次数: |
3714 次 |
最近记录: |