IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

MMC Snap-in VB.net


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    ISAE-ENSMA
    Inscrit en
    Juin 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : ISAE-ENSMA
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 11
    Points : 10
    Points
    10
    Par défaut MMC Snap-in VB.net
    J'essaye actuellement de créer une console snap-in à l'aide de l'outil Microsoft Management Console (MMC)

    Pour le moment, je n'arrive pas à compiler mon bout de code qui m'affiche une erreur à la ligne ci-dessous (erreur souligné : le >) :

    <SnapInSettings(Guid = "{CFAA3895-4B02-4431-A168-A6416013C3DD}", DisplayName = "- Simple SnapIn Sample", Description = "Simple Hello World SnapIn") >

    Erreur 1 Le spécificateur d'attribut n'est pas une instruction complète. Utilisez un signe de continuation de ligne pour appliquer l'attribut à l'instruction suivante.

    Je suppose que c'est la transition C# => VB.net qui ne va pas, mais je n'arrive pas à solutionner mon problème, j'ai déjà pas mal fouiller google, mais je ne trouve pas grand chose.

    Voici mon code pour créer le snap-in traduit du C# à partir d'ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Imports Microsoft.ManagementConsole
    Imports System.ComponentModel
    Imports System
    Imports System.Security.Permissions
     
    <Assembly: PermissionSetAttribute(SecurityAction.Assert)> 
     
    Namespace Microsoft.ManagementConsole.Samples
     
     
        <RunInstaller(True)>
        Public Class InstallUtilSupport
            Inherits SnapInInstaller
     
        End Class
     
        Public Class SimpleSnapIn
            Inherits SnapIn
     
             <SnapInSettings(Guid = "{CFAA3895-4B02-4431-A168-A6416013C3DD}", DisplayName = "- Simple SnapIn Sample", Description = "Simple Hello World SnapIn") > 'Ligne de l'erreur
     
            Public Sub SimpleSnapIn()
     
                '// Update tree pane with a node in the tree
                Me.RootNode = New ScopeNode()
                Me.RootNode.DisplayName = "Hello World"
            End Sub
        End Class
    End Namespace
    J'ai aussi tester la version d'ici mais même erreur.

    Quelqu'un ayant déjà pratiqué l'utilisation de MMC pourrait-il m'éclairer ou me fournir un bout de code fonctionnel ?

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,

    A mon avis ne met pas une ligne vide entre les deux instructions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      <SnapInSettings(Guid = "{CFAA3895-4B02-4431-A168-A6416013C3DD}", DisplayName = "- Simple SnapIn Sample", Description = "Simple Hello World SnapIn") > _
      Public Sub SimpleSnapIn()
    EDIT et ajoute le caractère _ pour indiquer que la suite de l'instruction est sur la ligne suivante

  3. #3
    Membre à l'essai
    Homme Profil pro
    ISAE-ENSMA
    Inscrit en
    Juin 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : ISAE-ENSMA
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Merci pour ta réponse.
    J'ai testé comme tu me l'as précisé, et non ça ne fonctionne pas non plus.

    J'ai donc décidé de le faire en C# même si je connais moins le langage.

    J'ai réussi à créer le .dll avec le même code que microsoft pour me faire la main, je l'installe avec la commande installutil.exe dans l'invite de commande de Visual Studio.

    Et quand j'essaye de l'ajouter dans la console MMC : Erreur

    Impossible de charger le fichier ou l'assembly 'SimpleSnapIn1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' ou une de ses dépendances. Cet assembly a été construit par un runtime plus récent que le runtime actuellement chargé et ne peut pas être chargé.

    Type d'exception :
    System.IO.FileNotFoundException

    à System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
    à System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
    à System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
    à System.Activator.CreateInstance(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityInfo, StackCrawlMark& stackMark)
    à System.Activator.CreateInstance(String assemblyName, String typeName)
    à System.AppDomain.CreateInstanceAndUnwrap(String assemblyName, String typeName)
    à Microsoft.ManagementConsole.Internal.SnapInClient.CreateSnapIn(String assemblyName, String typeName)
    à Microsoft.ManagementConsole.Internal.ClassLibraryServices.Microsoft.ManagementConsole.Internal.IClassLibraryServices.CreateSnapIn(String assemblyName, String typeName)
    à Microsoft.ManagementConsole.Executive.SnapInInitializationOperation.OnStart()
    à Microsoft.ManagementConsole.Executive.RunningOperationsTable.EnqueueOperation(Operation operation)
    à Microsoft.ManagementConsole.Executive.StandAloneComponentData..ctor(SnapInRegistrationInfo info, Int32 bookkeepingId)
    à Microsoft.ManagementConsole.Advanced.FrameworkSnapInFactory.Microsoft.ManagementConsole.Advanced.ISnapInFactory.CreateSnapIn(Int32 bookkeepingId, String snapInKey, Object& snapIn)
    Que signifie exactement cette erreur ? Il faut que j'utilise un frameworks moins récent ? Là je suis en 4.0 et j'ai installé Windows SDK 7.1. Que signifie le runtime ?

    System.IO.FileNotFoundException, il ne trouve pas mon fichier, faut-il placer le .dll dans un dossier spécifique après l'installation pour pouvoir l'ajouter dans la MMC ?

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Pour info, voici le code en VB que j'avais essayé (compil ok)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    ' Install : InstallUtil SnapInVB.dll
    Imports System
    Imports Microsoft.ManagementConsole
    Imports System.ComponentModel
    Imports System.Security.Permissions
     
    <Assembly: PermissionSetAttribute(Security.Permissions.SecurityAction.RequestMinimum, Unrestricted:=True)> 
    Namespace Microsoft.ManagementConsole.SnapInVB
     
        ''' <summary>Le point d'entré principal pour la création du Snap-In</summary>
        <SnapInSettings("{49fbc852-fa0d-4191-ac47-a4bb08b19879}", DisplayName:="Snap-In VB", Description:="Snap-In-VB Bonjour le monde.")> _
        Public Class SnapInVB
            Inherits SnapIn
            ''' <summary>constructeur.</summary>
            ''' <remarks>Met à jour le volet d'arborescence avec un noeud dans l'arbre</remarks>
            Public Sub New()
                Me.RootNode = New ScopeNode()
                Me.RootNode.DisplayName = "Bonjour le monde."
            End Sub
        End Class
     
        ''' <summary> L'attribut RunInstaller permet au .Net framework d'installer l'assembly. </summary>
        <RunInstaller(True)> _
        Public Class InstallUtilSupport
            Inherits SnapInInstaller
        End Class
     
    End Namespace
    Par contre j'ai le même message au niveau de la console MMC même en administrateur, là, je n'ai pas d'idée, désolé.

  5. #5
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    MMC ne supporte pas .NET4 de base. Il existe des solutions de contournement : https://connect.microsoft.com/Visual...ate-mmc-snapin

  6. #6
    Membre à l'essai
    Homme Profil pro
    ISAE-ENSMA
    Inscrit en
    Juin 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : ISAE-ENSMA
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Effectivement, je m'en doutais un peu (il semblerai que je sois même en frameworks 4.5), je viens d'essayer en ajoutant un fichier mmc.exe.config :

    <configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version='v4.5.50938' />
    <requiredRuntime version='v4.5.50938' safemode='true' />
    </startup>
    </configuration>
    ça ne fonctionne pas encore, mais j'ai un message d'erreur en moins.
    Le dernier message d'erreur m'indique :

    MMC ne peut pas initialiser le composant logiciel enfichable
    On doit être sur la bonne piste, je regarderai mieux ça demain.
    Merci pour votre aide

  7. #7
    Membre à l'essai
    Homme Profil pro
    ISAE-ENSMA
    Inscrit en
    Juin 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : ISAE-ENSMA
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Après pas mal de test et de recherche, je n'arrive pas à me débarrasser de cet erreur lors de l'ajout du snap-in dans la MMC :

    Nom : Erreur MMC.png
Affichages : 379
Taille : 19,9 Ko

    Je pense que ça vient du code dans le snap-in, il doit y avoir quelque chose qu'il n'apprécie pas. Quelqu'un aurait-il une idée ?

  8. #8
    Membre à l'essai
    Homme Profil pro
    ISAE-ENSMA
    Inscrit en
    Juin 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : ISAE-ENSMA
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Bien, j'ai enfin réussi à ajouter mon Snap-in.

    Pour cela, il faut désinstaller la Mise à Jour de Sécurité Windows (KB2844286).

    J'ai trouvé ça sur un forum microsoft :

    MMC cannot initialize the snap-in Event Viewer {b05566ad-fe9c-4363-be05-7a4cbb7cb510}

    Merci pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. MMC customiser un snap-in existant c++/c#
    Par boiteweb dans le forum Windows
    Réponses: 3
    Dernier message: 04/04/2008, 11h28
  2. [2.0][mmc] Création de snap-in customisé pour mmc
    Par marc_dd dans le forum Windows Forms
    Réponses: 4
    Dernier message: 06/12/2007, 13h03
  3. mmc Snap-In tuto. ?
    Par cl@ndestIno dans le forum Windows
    Réponses: 1
    Dernier message: 06/12/2006, 13h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo