none
mscorlib.dll - system.action manquant RRS feed

  • Question

  • Bonjour,

    J'ai un étrange comportement avec une apllication Silverlight.

    Dans une solution, lorsque j'essaie d'utiliser System.Action, Intellisense me propose uniquement System.Action <T> et pas System.Action. L'utilisation sans paramètre est en erreur. L'object Browser me montre pourtant System.Action (sans paramètre).

    Si je crée une solution vierge, j'ai accès à System.Action sans paramètre, et la compilation fonctionne !

    Merci pour votre aide.

    Chris

     

    mercredi 14 juillet 2010 17:15

Réponses

Toutes les réponses

  • Bonjour,

     

    Quelle version de Silverlight utilisez-vous  dans le premier projet ?

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Café des usages

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

     

    jeudi 15 juillet 2010 14:33
  • Bonjour,

    J'utilise Silverlight 4 dans tous les projets (ceux ou System.Action est disponible sans paramètres et ceux où il est uniquement disponible avec).

    Merci.

    Cordialement,

    Chris

    jeudi 15 juillet 2010 15:23
  • Bonjour,

    Vous êtes sur que vos projets cible bien la version Silverlight 4 ? (Vérifiez dans les propriétés des projets). L'intelli-sense n'offre pas "Action" dans du code appartenant à une application Silverlight ou une bibliothèque de classe ?

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS Windows Forms - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    jeudi 15 juillet 2010 20:00
    Modérateur
  • Bonjour,

    Merci pour votre réponse

    Après vérifcation, mes projets sont des 'Silverlight Applications' en Silverlight 4, pour l'un je n'ai que System.Action<> et l'autre System.Action (void) et Sytem.Action<>.

    D'après vos informations, il est normal de ne pas avoir accès à 'System.Action' dans une application Silverlight 4 ou une Classe Silverlight 4 ? si j'ai bien compris.

    Merci,

    Cordialement,

    Chris

    vendredi 16 juillet 2010 06:34
  • Bonjour,

    System.Action est intégré dans mscorlib dans Silverlight 4. Donc normalement vous devriez pouvoir l'utiliser car sans mscorlib, vous ne pouvez pas faire grand chose...

    Dans Silverlight 3, la classe Action se trouve dans System.Core. Il faut donc ajouter explictement la référence à cet assembly.

    Dans l'explorateur de classe, dans votre projet Silverlight, faites dérouler "Project References" -> mscorlib -> System. Vérifiez que la classe Action est visible.

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS Windows Forms - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    vendredi 16 juillet 2010 07:04
    Modérateur
  • Merci pour la réponse,

    J'ai bien mscorlib version 2.0.5.0 dans les deux projets. J'ai également System.Core 2.0.5.0. La classe action est visible dans les deux projets.

    mscorlib propose System.Action avec et sans paramètres, System.Core ne propose Sstem.Action qu'avec paramètres. Est-ce une piste ?

     Merci,

    Cordialement,

    Chris

    vendredi 16 juillet 2010 07:41
  • Bonjour,

    mscorlib propose System.Action avec et sans paramètres, System.Core ne propose Sstem.Action qu'avec paramètres. Est-ce une piste ?
    Non, c'est normal... Donc vous utilisez le .NET Framework 4.0.

    Mais si votre projet référencie mscorlib 2.0.5.0, normalement vous devriez voir la classe Action.
    Avez vous essayé de déclarer la classe Action avec le namespace comme ceci :

    System.Action a;
    a = ...
    

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS Windows Forms - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    vendredi 16 juillet 2010 07:55
    Modérateur
  • Bonjour,

    Dans Silverlight 3, écrivez ce code :

    System.Action x;

    System.Action<int> y;

     

     

    Dans le menu contextuel du ‘Action’ choisissez ‘Go to definition’. Pour System.Action vous allez voir l’assembly System.Core :

    #region Assembly System.Core.dll, v2.0.50727

    // C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v3.0\System.Core.dll

    #endregion

     

    namespace System

    {

        // Summary:

        //     Encapsulates a method that takes no parameters and does not return a value.

        public delegate void Action();

    }

     

     

    Pour System.Action<> vous allez voir mscorlib.dll :

    #region Assembly mscorlib.dll, v2.0.50727

    // C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v3.0\mscorlib.dll

    #endregion

     

    namespace System

    {

        // Summary:

        //     Encapsulates a method that takes a single parameter and does not return a

        //     value.

        //

        // Parameters:

        //   obj:

        //     The parameter of the method that this delegate encapsulates.

        //

        // Type parameters:

        //   T:

        //     The type of the parameter of the method that this delegate encapsulates.

        public delegate void Action<T>(T obj);

    }

     

     

    Dans Silverlight 4, vous avez mscorlib.dll pour les deux, Action() et Action<T>.

     

    Que voulez-vous dire par ‘avec et sans paramètres’ ?

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Café des usages

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

    vendredi 16 juillet 2010 08:04
  • Merci pour vos réponses,

    Sur un nouvau projet Silverlight 3 :

    private System.Action a;
    
    // Type: System.Action
    // Assembly: System.Core, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e
    // Assembly location: C:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v3.0\System.Core.dll
    
    namespace System
    {
    	public delegate void Action();
    }
    
    
    private System.Action<int> b;
    
    // Type: System.Action`1
    // Assembly: mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e
    // Assembly location: C:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v3.0\mscorlib.dll
    
    namespace System
    {
    	public delegate void Action <T>( T obj );
    }
    

     Sur un nouveau projet Silverlight 4

    private System.Action a;
    
    // Type: System.Action
    // Assembly: mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e
    // Assembly location: C:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\mscorlib.dll
    
    using System.Runtime.CompilerServices;
    
    namespace System
    {
    	[TypeForwardedFrom ( "System.Core, Version=2.0.5.0, Culture=Neutral, PublicKeyToken=7cec85d7bea7798e" )]
    	public delegate void Action();
    }
    
    
    
    private System.Action<int> b;
    
    // Type: System.Action`1
    // Assembly: mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e
    // Assembly location: C:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\mscorlib.dll
    
    namespace System
    {
    	public delegate void Action <T>( T obj );
    }

     

    Dans mon projet existant

    System.Action a;  => incorrect number of type parameters !

    System.Action<int> b;
    
    // Type: System.Action`1
    // Assembly: mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e
    // Assembly location: C:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v3.0\mscorlib.dll
    
    namespace System
    {
    	public delegate void Action <T>( T obj );
    }
    

     

    Avec ou sans paramètres, se réfère au "Type parameters: T: - The type of the parameter of the method that this delegate encapsulates.

    J'ai accès à la méthode avec un ou plusieurs type parameters System.Action<T>, mais pas à celle sans System.Action().

    Merci

    Cordialement,

    Chris

    vendredi 16 juillet 2010 12:05
  • Bonjour,

     

    Donc vous pouvez confirmer que l’utilisation de System.Action fonctionne correctement dans un nouveau projet, mais pas dans votre projet courant ? Je crois qu’il s’agit d’un problème de références dans votre projet, mais il est difficile de le découvrir juste à partir de votre description. Je vous conseille d’ouvrir un ticket sur Microsoft Connect et de présenter votre scenario la bas, en fournissant au même temps une copie de votre projet. Je crois que vous pouvez recevoir une réponse plus précise comme ça.

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Café des usages

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

    • Marqué comme réponse CDU 2I3S mardi 20 juillet 2010 16:03
    lundi 19 juillet 2010 11:01
  • Bonjour,

    Merci pour votre aide. Je vais allez sur Microsoft Connect.

    Cordialement,

    Chris

    mardi 20 juillet 2010 16:03