Verhalten der Assembly.gettypes () in Visual Studio 2015 geändertC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Verhalten der Assembly.gettypes () in Visual Studio 2015 geändert

Post by Anonymous »

Ich habe gestern unsere Lösung in Visual Studio 2015 geöffnet und einige unserer Unit -Tests (die in Visual Studio 2013 gut lief) fehlgeschlagen. Digger tiefer entdeckte ich, dass es daran lag, dass das Aufrufen von Gettypes () in einer Baugruppe unterschiedliche Ergebnisse zurückgab. Ich konnte einen sehr einfachen Testfall erstellen, um ihn zu veranschaulichen. Ich habe den folgenden Code in beide Projekte eingebaut. < /P>

Code: Select all

class Program
{
static void Main(string[] args)
{
var types = typeof(Program).Assembly.GetTypes()
.Where(t => !t.IsAbstract && t.IsClass);

foreach (var type in types)
{
Console.WriteLine(type.FullName);
}

Console.ReadKey();
}
}
< /code>
Wenn ich in Visual Studio 2013 ausführe, erhalte ich die folgende Ausgabe (wie erwartet). /p>
< /blockquote>
Wenn ich in Visual Studio 2015 renne, erhalte ich die folgende Ausgabe (nicht wie erwartet). < /p>

VS2015AMPLEM.PROGRAM < /P>
VS2015Example.Program+c
< /blockquote>
Also, was ist das, was das vs2015Example.Program+  c 
Typ? Es stellt sich heraus, dass es die Lambda in der Methode von .where () ist. Ja, das stimmt, irgendwie wird ein lokaler Lambda als Typ entlarvt. Wenn ich die .where () in VS2015 kommentiere, dann erhalte ich diese zweite Zeile nicht mehr. Nur Unterschiede sind die VS -Versionsnummer, die Projektguid, die Namen des Standard -Namespace und die Assembly und der VS2015 One hatten einen Hinweis auf System.net.http, dass der VS2013 One nicht. < /p>
< P> Hat jemand das noch einmal gesehen?>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post