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/