Je ne pense pas que System.Numerics.dll fasse partie de la distribution de Silverlight 4.0. Mais ce n'est pas le vrai point. Ce que vous regardez est une version spéciale de l'assemblage de référence. Vous en trouverez un dans c:\program files\reference assemblies\microsoft\framework\.netframework\v4.0
par exemple.
Les assemblages sont dépouillés de leur IL. Leurs métadonnées sont par ailleurs identiques aux assemblages de référence "réels" dans c:\windows\microsoft.net\framework\v4.0.30319
Je n'ai aucune idée de ce que la fonction de ces assemblages dénudés est supposée être. Je peux seulement imaginer qu'ils sont destinés à accélérer la compilation, puisque le compilateur n'a besoin que des métadonnées. Mais c'est un peu long. Je peux aussi imaginer que cela a quelque chose à voir avec le mystérieux nouvel attribut [TargetedPatchingOptOut], un tir très long aussi puisque le mécanisme qui le sous-tend n'est expliqué nulle part que je pourrais trouver. J'ai eu une conversation avec JaredPar à ce sujet, il allait demander à MSFT à ce sujet. Je n'ai pas entendu de retour.
Eh bien, pas de vraie réponse, mais cela explique ce que vous avez vu.
Suite à cela, j'ai une autre théorie, inspirée quand j'ai noté que le dossier s'appelait "v4.0". Notez que le numéro de build n'en fait pas partie, comme dans c: \ windows \ microsoft.net. Cela devrait avoir des effets intéressants lors de la publication de nouvelles versions, similaires aux mises à jour des assemblys de base de .NET 2.0 lors de la publication des Service Packs. Malheureusement, une chose qui est allé très mal est que ces mises à jour ont eu des changements dans les classes de base, sans une modification de la [AssemblyVersion]. Le plus visible était la classe WaitHandle, elle a acquis la surcharge WaitOne (int). Très utile, car personne ne pourrait jamais comprendre ce qu'il faut passer pour l'argument exitContext. Utiliser cette nouvelle surcharge était facile à faire, en ciblant .NET 2.0 ne l'empêche pas, mais l'enfer se déchaîne si la machine cible a la version .NET 2.0 RTM d'origine installée sans obtenir les Service Packs.
Ma conjecture: ces assemblages de référence sont les assemblages de base pour toute version actuelle et future de .NET 4.0. Leur interface publique est gelée. Et vous empêche d'utiliser accidentellement une méthode publique qui est ajoutée dans une version ultérieure. Il s'ensuit que l'IL n'est pas utile parce que cela va changer.
Fascinant. Je n'étais pas au courant de tout ça. –
+1: Merci beaucoup d'avoir expliqué cela, très intéressant. Je peux confirmer que les «vrais» assemblages ont plus que des métadonnées et que Visual Studio utilise les assemblages «de référence». –