J'ai une application ASP.NET en cours d'exécution sur un serveur web distant et je viens de commencer à obtenir cette erreur:compilateur C# Optimise de manière incorrecte code
Method not found: 'Void System.Collections.Generic.ICollection`1..ctor()'.
Je démonte le code dans la DLL et il semble que le compilateur est optimiser de manière incorrecte le code. (Notez que Set est une classe qui implémente un ensemble d'objets uniques Il hérite de IEnumerable..) Cette ligne:
Set<int> set = new Set<int>();
est compilé dans cette ligne:
Set<int> set = (Set<int>) new ICollection<CalendarModule>();
La classe CalendarModule est totalement classe sans rapport !! Est-ce que quelqu'un a déjà remarqué .NET compiler incorrectement du code comme ça avant?
Mise à jour # 1: Ce problème semble être introduit par l'outil ILMerge de Microsoft. Nous étudions actuellement comment le surmonter.
Mise à jour # 2: Nous avons trouvé deux façons de résoudre ce problème jusqu'à présent. Nous ne comprenons pas très bien le problème sous-jacent, mais les deux le corrigent:
Désactivez l'optimisation.
Fusionnez l'assembly avec ILMerge sur un autre ordinateur.
Alors on se demande si la machine de construction est en quelque sorte une erreur de configuration (ce qui est étrange étant donné que nous avons utilisé la machine à construire des versions pour plus d'un an) ou si elle est un autre problème. Etes-vous sûr que l'assemblage que vous regardez a été généré à partir du code source en question?
Ce code est insuffisant pour déboguer votre problème. Pourriez-vous télécharger suffisamment de code pour reproduire le problème quelque part? – Wedge
Vous ne savez pas que Int hérite de CalenderModule? :) – FlySwat