net full framework differences asp and c# .net .net-core

c# - full - difference between.net core and framework



Obtener "No se puede evaluar una funciĆ³n de seguridad" cuando se usan puntos de interrupciĆ³n condicionales y en una ventana inmediata (1)

Ese error parece deberse a que la ventana inmediata no permite nada que pueda causar efectos secundarios. Por lo general, los efectos secundarios se permiten en la ventana inmediata ... pero no le gusta GroupBy en la List<T> (mientras GroupBy en T[] es tolerado)

Me reproduje usando tu ejemplo.

people.GroupBy(c => c.Group).ToList() lanza
people.Where(c => c.Name.Contains("F")).ToList() no.

No requería un punto de interrupción condicional. Mi prueba fue con un nuevo proyecto .net core 2.0 Debug Any CPU build. Esta fue la versión estable de VS Pro 2017 v15.3.1

Para solucionar este problema, haga una copia de su lista en una matriz:

people.ToArray().GroupBy(c => c.Group).ToList()

También recomiendo presentar un informe de error con MS.

Al desarrollar aplicaciones .NET Core 2.0, tengo problemas con puntos de interrupción condicionales, ver evaluaciones y evaluaciones de ventana inmediatas. Estoy recibiendo el siguiente error:

modifiers.GroupBy(c => c.Modifier.Group).ToList()
lanzó una excepción de tipo ''System.ArgumentException''
Datos: {System.Collections.ListDictionaryInternal}
HResult: -2147024809
HelpLink: null
InnerException: null
Mensaje: "No se puede evaluar una función de seguridad".
Nombre de parámetro: nulo
Fuente: nula
StackTrace: nulo
TargetSite: nulo

¿Qué puede causar este problema? ¿Hay una solución? Esto funciona bien en una aplicación .NET Framework 4.x.

Editar: Agregar ejemplo de código

Usando la siguiente clase:

public class Person { public string Name { get; set; } public int Age { get; set; } public string Group { get; set; } }

En una aplicación de consola normal, orientada a .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(); }

Establezca un punto de interrupción después de la inicialización de la List<Person> . En la ventana inmediata , al intentar evaluar un GroupBy o un Where que no es un simple control de igualdad, lanzará una ArgumentException con el mensaje "No se puede evaluar una función de seguridad".

Un par de ejemplos serían:

people.Where(c => c.Name.Contains("F")).ToList() people.GroupBy(c => c.Group).ToList()

Nota: las declaraciones de observación parecen estar funcionando en Visual Studio Code, pero no en Visual Studio 2017 Preview 3.