Erreur lors de l'utilisation de méthodes d'extension en C#

Je suis tombé sur un problème qui me fait penser il y a un bug dans la version 3.0 du framework. Lorsque j'essaie d'utiliser des méthodes d'extension j'obtiens l'erreur suivante:

Missing compiler required member
'System.Runtime.CompilerServices.ExtensionAttribute..ctor'

Lors de l'utilisation de ce code simple:

public static class StringUtils {
    static void TestExtension(this String targetString) {

    }
}

La seule façon de faire cette erreur de compilation aller loin est d'ajouter le code suivant:

namespace System.Runtime.CompilerServices {
    public class ExtensionAttribute : Attribute { }
}

Il a été quelques mois depuis que j'utilise les extensions de méthodes, mais je suis assez sûr que je n'ai pas eu à le faire. Quelqu'un d'autre a rencontré ce problème?

  • J'ai le framework cible fixée à 3,5 dans les propriétés du projet.
  • Dans ce cas, je me demande si l'une des assemblées de la référence de déclarer cet attribut (avec l'aimable autorisation de mise à niveau .NET 2.0 avec C# 3.0), et le compilateur est d'avoir du mal à choisir lequel utiliser? Obtenez-vous ce problème de vanille (propre) de projet avec juste la StringUtils etc?
  • (ce qui signifie: pas System.Core.dll et peut-être avec un interne constructeur)
  • Connexes: Catch-22 de avec auto-défini ExtensionAttribute
  • Cette erreur se produit si vous avez besoin de cibler un ancien Cadre de la version. Vous ne savez pas comment vieux, mais je l'ai eu quand j'ai eu pour cible .Net Framework 2.0. La solution ci-dessus a travaillé.
InformationsquelleAutor Korbin | 2008-10-15