Bonjour,
J'utilise MS Visual Studio 2015. J'essaye d'utiliser un contrôle FastColoredTextBox dans mon application mais sans succès :
- J'arrive bien à ajouter le contrôle dans la boite à outil en faisant clic droit puis "choisir les élements" et dans l'onglet "Composants .NET Framework" à sélectionner le fichier FastColoredTextBox.DLL
- J'arrive bien ensuite à ajouter le contrôle à une fenêtre de mon projet, et à ajuster ses propriétés, sa taille et son emplacement.
- Mais au moment de la compilation, j'ai cette erreur obscure :
Chose étrange : le projet exemple TesterVB fournit dans l'archive de FastColoredTextBox fonctionne bien avec VS2015
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 1>------ Début de la génération*: Projet*: LUCAS_BMP_CNC, Configuration*: Debug Any CPU ------ 1>C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3253: Le Framework ciblé actuel ".NETFramework,Version=v4.0,Profile=Client" ne comprend pas "System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" dont dépend l'assembly référencé "TabStrip". Cela a empêché la résolution de l'assembly référencé. Pour résoudre cela, (1) modifiez le Framework ciblé pour ce projet, ou (2) supprimez l'assembly référencé du projet. 1>C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3253: Le Framework ciblé actuel ".NETFramework,Version=v4.0,Profile=Client" ne comprend pas "System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" dont dépend l'assembly référencé "FastColoredTextBox". Cela a empêché la résolution de l'assembly référencé. Pour résoudre cela, (1) modifiez le Framework ciblé pour ce projet, ou (2) supprimez l'assembly référencé du projet. 1>D:\_DONNEES\_CNC\VBNET_LUCAS_BMP_CNC\LUCAS_BMP_CNC\FrmSTL.resx(137,5): error MSB3103: Fichier Resx non valide. Impossible de charger le type FastColoredTextBoxNS.ServiceColors, FastColoredTextBox, Version=2.16.26.0, Culture=neutral, PublicKeyToken=fb8aa12b994ef61b utilisé dans le fichier .RESX. Assurez-vous que les références nécessaires ont été ajoutées à votre projet. Ligne 137, position 5. ========== Génération*: 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
Du coup j'ai ouvert côte à côte l'exemple TesterVB et mon projet avec VS2015 pour comparer les propriétés du projets (ressources, références, espaces de nom).
J'ai essayé d'ajouter ce qu'il semblait manquer sur mon projet par rapport à l'exemple, mais sans succès non plus.
Une remarque importante cependant : dans mon projet, les références suivantes ont la version 4.0.0.0 alors qu'elles sont à la version 2.0.0.0 dans le projet exemple :
- System
- System.Data
- System.Deployment
- System.Drawing
- System.Windows.Forms
- System.XML
Selon les principes de la compatibilité ascendante, ce qui fonctionne avec les versions 2 devraient l'être avec la 4...
En faisant des recherches sur les erreurs de fichier REXS j'ai trouvé ça, en anglais :
https://stackoverflow.com/questions/...type-error-why
J'ai tenté de faire ce qu'ils disaient, à avoir
- supprimer la section <data></data> du fichier RESX :
- et ensuite remplacer
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 <data name="FastColoredTextBox1.ServiceColors" mimetype="application/x-microsoft.net.object.binary.base64"> <value> AAEAAAD/////AQAAAAAAAAAMAgAAAFdGYXN0Q29sb3JlZFRleHRCb3gsIFZlcnNpb249Mi4xNi4yNi4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWZiOGFhMTJiOTk0ZWY2MWIMAwAAAFFTeXN0 ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACJGYXN0Q29sb3JlZFRleHRCb3hOUy5TZXJ2aWNlQ29sb3JzBgAA ACg8Q29sbGFwc2VNYXJrZXJGb3JlQ29sb3I+a19fQmFja2luZ0ZpZWxkKDxDb2xsYXBzZU1hcmtlckJh Y2tDb2xvcj5rX19CYWNraW5nRmllbGQqPENvbGxhcHNlTWFya2VyQm9yZGVyQ29sb3I+a19fQmFja2lu Z0ZpZWxkJjxFeHBhbmRNYXJrZXJGb3JlQ29sb3I+a19fQmFja2luZ0ZpZWxkJjxFeHBhbmRNYXJrZXJC YWNrQ29sb3I+a19fQmFja2luZ0ZpZWxkKDxFeHBhbmRNYXJrZXJCb3JkZXJDb2xvcj5rX19CYWNraW5n RmllbGQEBAQEBAQUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAA ABRTeXN0ZW0uRHJhd2luZy5Db2xvcgMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAFFN5c3RlbS5E cmF3aW5nLkNvbG9yAwAAABRTeXN0ZW0uRHJhd2luZy5Db2xvcgMAAAACAAAABfz///8UU3lzdGVtLkRy YXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAACgAAAAAA AAAAlgABAAH7/////P///woAAAAAAAAAAKQAAQAB+v////z///8KAAAAAAAAAACWAAEAAfn////8//// CgAAAAAAAAAAjQABAAH4/////P///woAAAAAAAAAAKQAAQAB9/////z///8KAAAAAAAAAACWAAEACw== </value> </data>
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part Me.FastColoredTextBox1.ServiceColors = CType(resources.GetObject("FastColoredTextBox1.ServiceColors"), FastColoredTextBoxNS.ServiceColors)
Mais j'ai les erreurs suivantes dans la sortie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Me.FastColoredTextBox1.ServiceColors = CType(New FastColoredTextBoxNS.ServiceColors, FastColoredTextBoxNS.ServiceColors)
Je ne sais pas du tout comment faire - là on est plus tellement dans la programmation mais dans le "cambouis" des subtilités .NET
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 1>------ Début de la génération*: Projet*: LUCAS_BMP_CNC, Configuration*: Debug Any CPU ------ 1>C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3253: Le Framework ciblé actuel ".NETFramework,Version=v4.0,Profile=Client" ne comprend pas "System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" dont dépend l'assembly référencé "TabStrip". Cela a empêché la résolution de l'assembly référencé. Pour résoudre cela, (1) modifiez le Framework ciblé pour ce projet, ou (2) supprimez l'assembly référencé du projet. 1>C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3253: Le Framework ciblé actuel ".NETFramework,Version=v4.0,Profile=Client" ne comprend pas "System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" dont dépend l'assembly référencé "FastColoredTextBox". Cela a empêché la résolution de l'assembly référencé. Pour résoudre cela, (1) modifiez le Framework ciblé pour ce projet, ou (2) supprimez l'assembly référencé du projet. 1>D:\_DONNEES\_CNC\VBNET_LUCAS_BMP_CNC\LUCAS_BMP_CNC\FrmSTL.Designer.vb(2126,46): error BC30002: Le type 'FastColoredTextBoxNS.FastColoredTextBox' n'est pas défini. 1>D:\_DONNEES\_CNC\VBNET_LUCAS_BMP_CNC\LUCAS_BMP_CNC\FrmSTL.vb(4,9): warning BC40056: L'espace de noms ou le type spécifié dans les Imports 'FastColoredTextBoxNS' ne contient aucun membre public ou est introuvable. Vérifiez que l'espace de noms ou le type est défini et qu'il contient au moins un membre public. Vérifiez que le nom de l'élément importé n'utilise pas d'autres alias. ========== Génération*: 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
Ce contrôle est sympa mais ces galères me font penser à de très mauvais souvenirs avec les OCX de l'époque Visual Basic 5...
Chose intéressante : j'ai le code source du projet bibliothèque en C#
Je pourrais éventuellement modifier et recompiler la bibliothèque pour qu'elle soit acceptée par mon projet.
Le C# ne me dérange pas (j'ai fait d'autres projets, notamment en embarqué, en C++)
En revanche je ne sais pas du tout comment fonctionne un projet bibliothèque par rapport à une application Windows Forms.
J'ai ouvert le projet bibliothèque, et cherché, dans la solution complète, "ServiceColors"
On ne trouve pas grand chose, et surtout je ne comprend pas pourquoi cela engendre un bloc de données Base64 dans le fichier RESX de la fenêtre où je souhaite utiliser le contrôle.
Tous les résultats sont dans le fichier FastColoredTextBox.cs :
Code CS : 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
60
61
62
63
64
65
66 /// <summary> /// Constructor /// </summary> public FastColoredTextBox() { ServiceColors = new ServiceColors(); } /// <summary> /// Colors of some service visual markers /// </summary> [Browsable(true)] [Description("Colors of some service visual markers.")] [TypeConverter(typeof(ExpandableObjectConverter))] public ServiceColors ServiceColors { get; set; } private void DrawMarkers(PaintEventArgs e, Pen servicePen) { foreach (VisualMarker m in visibleMarkers) { if(m is CollapseFoldingMarker) using(var bk = new SolidBrush(ServiceColors.CollapseMarkerBackColor)) using(var fore = new Pen(ServiceColors.CollapseMarkerForeColor)) using(var border = new Pen(ServiceColors.CollapseMarkerBorderColor)) (m as CollapseFoldingMarker).Draw(e.Graphics, border, bk, fore); else if (m is ExpandFoldingMarker) using (var bk = new SolidBrush(ServiceColors.ExpandMarkerBackColor)) using (var fore = new Pen(ServiceColors.ExpandMarkerForeColor)) using (var border = new Pen(ServiceColors.ExpandMarkerBorderColor)) (m as ExpandFoldingMarker).Draw(e.Graphics, border, bk, fore); else m.Draw(e.Graphics, servicePen); } } [Serializable] public class ServiceColors { public Color CollapseMarkerForeColor { get; set; } public Color CollapseMarkerBackColor { get; set; } public Color CollapseMarkerBorderColor { get; set; } public Color ExpandMarkerForeColor { get; set; } public Color ExpandMarkerBackColor { get; set; } public Color ExpandMarkerBorderColor { get; set; } public ServiceColors() { CollapseMarkerForeColor = Color.Silver; CollapseMarkerBackColor = Color.White; CollapseMarkerBorderColor = Color.Silver; ExpandMarkerForeColor = Color.Red; ExpandMarkerBackColor = Color.White; ExpandMarkerBorderColor = Color.Silver; } }
Dans le dépôt GitHub j'ai trouvé cette issue qui pourrait résoudre le problème
https://github.com/PavelTorgashov/Fa...Box/issues/176
Mais je ne comprends pas quoi modifier
A bientôt
Partager