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:
Cette fonction fonctionne j'ai testé mon code LINQ.
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; }
Mon problème viens de la délection de mes Addins
Voici la fonction qui fait la maj du cache du pipeline
Quand je fais
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; }
teste est vide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Collection<AddInToken> teste = AddInStore.FindAddIns(typeof(AddinsProtocolViewHost), m_pluginsLocation));.
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/
Partager