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

C# Discussion :

Problème lors de la détection de mes Addin-in (System.Addin)


Sujet :

C#

  1. #1
    Membre très actif
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Par défaut Problème lors de la détection de mes Addin-in (System.Addin)
    Bonjour désolé de vous demander conseil encore une fois mais j'ai un souci un peu étrange.

    Voila mon application utilise la class System.AddIn, pour comme sont nom l'indique heu gérer des Addin .

    J'ai codé une petite dll nommé AddInsLoad qui contient une class nommé PluginsLoader cette class contient divers opérations, la sélection AddIN et la mise à jour.

    J'ai une fonction membre qui me permet d'obtenir un AddInToken en fonction d'un paramètre:

    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
     
    public AddInToken GetAddInToken(string data)
    {
    _lock.EnterReadLock();
    try
    {
    if (string.IsNullOrEmpty(data))
    return null;
    var token = from x in m_PluginsArray
    from v in m_addins
    where x.Value.Contains(data) &
    v.Name.Equals(x.Key, StringComparison.InvariantCultureIgnoreCase)
    select v;
    foreach (var tken in token)
    return tken;
    }
    finally
    {
    _lock.ExitReadLock();
    }
    return null;
    }
    Cette fonction fonctionne j'ai testé mon code LINQ.

    Mon problème viens de la délection de mes Addins

    Voici la fonction qui fait la maj du cache du pipeline

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    public void UpdateAddinsCache()
    {
    this.IsUpdating = true;
    _lock.EnterUpgradeableReadLock();
    try
    {
    _lock.EnterWriteLock();
    try
    {
    m_addins.Clear();
    m_PluginsArray.Clear();
    }
    finally
    {
    _lock.ExitWriteLock();
    }
    // LoadPlugins();
     
    // Mise … jour des addins et du cache du pipeline
    AddInStore.Rebuild(m_pluginsLocation);
     
    // Recherche des addins
    List<Collection<AddInToken>> tokens = new List<Collection<AddInToken>>();
    tokens.Add(AddInStore.FindAddIns(typeof(AddinsViewHost), m_pluginsLocation));
    tokens.Add(AddInStore.FindAddIns(typeof(AddinsProtocolViewHost), m_pluginsLocation));
     
     
    _lock.EnterWriteLock();
    try
    {
    tokens.ForEach(
    delegate(Collection<AddInToken> tken)
    {
    if (tken != null)
    {
    foreach (AddInToken T in tken)
    {
    m_addins.Add(T);
    }
    }
    });
    }
    finally
    {
    _lock.ExitWriteLock();
    }
    Console.WriteLine("=======================");
    Console.WriteLine(">> " + m_addins.Count); // Bon alors y'a un plugin ou pas ????
    Console.WriteLine("=======================");
    }
    finally
    {
    _lock.ExitUpgradeableReadLock();
    }
    this.IsUpdating = false;
    }
    Quand je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Collection<AddInToken>
     teste = AddInStore.FindAddIns(typeof(AddinsProtocolViewHost), m_pluginsLocation));
    teste est vide .

    J'ai donc revérifié tout mes contrats et tout est niquel de même que la déclaration de mon AddIn que voila:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    namespace Addins.Http
    {
    [AddIn("Addins.Http",
    Version = "1.0.0.0",
    Description = "This addin can do HTTP request",
    Publisher = "Moi")]
    public class AddinsHttp : BlueCurve.Plugins.View.AddinsProtocolView

    Je ne comprend pas ce qui cloche.

    Merci de votre aide

    NB: Je me suis basé sur ce tuto http://badger.developpez.com/tutorie...framework-3-5/

  2. #2
    Membre très actif
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Par défaut
    Bon alors je ne comprend rien la. Comme la détection de mes Add-in ne fonctionne pas j'ai commenté tout le code de la fonction main de mon application et écrit du code minimal pour voir si ce n'est pas ma lib qui déconne j'ai donc écrit cela.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
                AddInStore.Update("Plugins");
                System.Collections.ObjectModel.Collection<AddInToken> c = AddInStore.FindAddIns(typeof(BlueCurve.Host.View.AddinsProtocolViewHost), "Plugins");
     
                Console.WriteLine(">>>> " + c.Count);
    J'obtiens 0. Je n'arrive vraiment pas à comprendre.

    HELP

    EDIT: J'ai ajouter le code de ma lib

  3. #3
    Membre très actif
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Par défaut
    Je fais remonter ce thread parceque j'ai toujours mon problème afin de voir si ce n'était pas un problème avec la lib de chargement j'ai écrit le code suivant qui ne détecte rien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                // Mise à jour des addins et du cache du pipeline
                AddInStore.Rebuild("Plugins");
                // Recherche des addins
                System.Collections.ObjectModel.Collection<AddInToken> _ip = AddInStore.FindAddIns(typeof(BlueCurve.Host.View.AddinsViewHost), "Plugins");
                Console.WriteLine(">>> " + _ip.Count);

    J'ai chercher dans mon ce qui pourrait clocher et je ne trouve pas aussi je vous transmets le code de mes différents contrat interface et vue dès fois que quelqu'un trouve ce qui ne va pas parceque je sèche carrement la :

    Voici mon contrat :
    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
     
     
    namespace BlueCurve.Plugins
    {
    /// <summary>
    /// Interface pour les Addins de type fichier
    /// </summary>
    [AddInContract]
    public interface IPlugins : IContract
    {
    IndexationData IndexerLoader(RequestState requeststate, string location);
    }
    /// <summary>
    /// Interface pour les Addins de type protocol
    /// </summary>
    [AddInContract]
    public interface IProtocol : IContract
    {
    RequestState Download(Attributes<string, int, DateTime, DateTime, int, string, string> downloadata, X509Certificate[] certificates, X509Certificate[] certificates2);
    IEnumerable Download(Attributes<string, int, DateTime, DateTime, int, string, string> downloadata, X509Certificate[] certificates, X509Certificate[] certificates2, bool n);
    string Accept { get; set; }
    Uri Proxy { get; set; }
    }
    }

    La vue coté addin:
    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
     
     
    namespace BlueCurve.Plugins.View
    {
    [AddInBase]
    public abstract class AddinsView
    {
    public abstract IndexationData IndexerLoader(RequestState requeststate, string location);
    }
    [AddInBase]
    public abstract class AddinsProtocolView
    {
    public abstract RequestState Download(Attributes<string, int, DateTime, DateTime, int, string, string> downloadata, X509Certificate[] certificates, X509Certificate[] certificates2);
    public abstract IEnumerable Download(Attributes<string, int, DateTime, DateTime, int, string, string> downloadata, X509Certificate[] certificates, X509Certificate[] certificates2, bool n);
    public abstract string Accept { get; set; }
    public abstract Uri Proxy { get; set; }
    }
    }

    L'adapteur niveau addin

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    namespace BlueCurve.Plugins.Adapter
    {
    [AddInAdapter]
    public class ApdapterPluginsViewToPluginsContract : ContractBase, BlueCurve.Plugins.IPlugins
    {
    private BlueCurve.Plugins.View.AddinsView _view;
    public ApdapterPluginsViewToPluginsContract(BlueCurve.Plugins.View.AddinsView view)
    {
    this._view = view;
    }
    #region IPlugins Membres
    public IndexationData IndexerLoader(RequestState requeststate, string location)
    {
    return this._view.IndexerLoader(requeststate, location);
    }
    #endregion
    }
     
     
     
    [AddInAdapter]
    public class ApdapterProtocolViewToProtocolContract : ContractBase, BlueCurve.Plugins.IProtocol
    {
    private BlueCurve.Plugins.View.AddinsProtocolView _view;
    public ApdapterProtocolViewToProtocolContract(BlueCurve.Plugins.View.AddinsProtocolView view)
    {
    this._view = view;
    }
    #region IProtocol Membres
    public string Accept { get; set; }
    public Uri Proxy { get; set; }
    public IEnumerable Download(Attributes<string, int, DateTime, DateTime, int, string, string> downloadata, X509Certificate[] certificates, X509Certificate[] certificates2, bool n)
    {
    yield return this._view.Download(downloadata, certificates, certificates2, n);
    }
    public RequestState Download(Attributes<string, int, DateTime, DateTime, int, string, string> downloadata, X509Certificate[] certificates, X509Certificate[] certificates2)
    {
    return this._view.Download(downloadata, certificates, certificates2);
    }
    #endregion
    }
    }

    La vue coté hote :

    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
     
     
    namespace BlueCurve.Host.View
    {
    public abstract class AddinsViewHost
    {
    public abstract IndexationData IndexerLoader(RequestState requeststate, string location);
    }
    public abstract class AddinsProtocolViewHost
    {
    public abstract RequestState Download(Attributes<string, int, DateTime, DateTime, int, string, string> downloadata, X509Certificate[] certificates, X509Certificate[] certificates2);
    public abstract IEnumerable Download(Attributes<string, int, DateTime, DateTime, int, string, string> downloadata, X509Certificate[] certificates, X509Certificate[] certificates2, bool n);
    public abstract string Accept { get; set; }
    public abstract Uri Proxy { get; set; }
    }
    }
    Et enfin l'adapter coté hote :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    namespace BlueCurve.Host.Adapter
    {
    [HostAdapter]
    public class AdapterPluginsContractToHostView : AddinsViewHost
    {
    private Plugins.IPlugins _contract;
    public AdapterPluginsContractToHostView(IPlugins contract)
    {
    this._contract = contract;
    }
    #region IPlugins Membres
    public override IndexationData IndexerLoader(RequestState requeststate, string location)
    {
    return this._contract.IndexerLoader(requeststate, location);
    }
    #endregion
    }
     
    [HostAdapter]
    public class AdapterProtocolContractToHostView : AddinsProtocolViewHost
    {
    private Plugins.IProtocol _contract;
    public AdapterProtocolContractToHostView(IProtocol contract)
    {
    this._contract = contract;
    }
    public override string Accept
    {
    get
    {
    return this._contract.Accept;
    }
    set
    {
    this._contract.Accept = value;
    }
    }
    public override Uri Proxy
    {
    get
    {
    return this._contract.Proxy;
    }
    set
    {
    this._contract.Proxy = value;
    }
    }
    public override IEnumerable Download(Attributes<string, int, DateTime, DateTime, int, string, string> downloadata, X509Certificate[] certificates, X509Certificate[] certificates2, bool n)
    {
    yield return this._contract.Download(downloadata, certificates, certificates2, n);
    }
    public override RequestState Download(Attributes<string, int, DateTime, DateTime, int, string, string> downloadata, X509Certificate[] certificates, X509Certificate[] certificates2)
    {
    return this._contract.Download(downloadata, certificates, certificates2);
    }
    }
    }

    Merci d'avance pour votre aide

Discussions similaires

  1. System.AddIn Communication inter - Addin
    Par bugu57 dans le forum Développement Windows
    Réponses: 1
    Dernier message: 17/09/2012, 10h48
  2. Problème lors de l'exécution de mes programmes
    Par darkmalak01 dans le forum Langage
    Réponses: 7
    Dernier message: 27/09/2005, 18h35
  3. Problème lors du EXTEND d'un tableau
    Par banana31 dans le forum Oracle
    Réponses: 14
    Dernier message: 10/02/2004, 10h58
  4. Problème lors du chargement
    Par carlito dans le forum Flash
    Réponses: 26
    Dernier message: 06/01/2004, 15h21
  5. Réponses: 2
    Dernier message: 17/08/2003, 20h07

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