J'ai un problème de débogage mon code C# dans Visual Studio 2015.point d'arrêt conditionnel ne fonctionne pas dans Visual Studio 2015
Je veux ajouter une expression simple en un point d'arrêt,
J'ajouté hierarchyRelation != null
comme condition. C'est une variable locale de la méthode que je débogue, et elle existe.
Cependant, dans l'exécution, je reçois l'erreur suivante
« La condition pour un point d'arrêt n'a pas exécuté. La condition était « hierarchyRelation! = Null ». L'erreur renvoyée est » Le must point d'arrêt condition évaluer une opération booléenne ». Cliquez sur OK pour arrêter à ce point d'arrêt.
en fait, la condition était plus complexe, mais c'est le cas le plus simple qui reproduit le problème. J'ai essayé les variantes et les propriétés même comparaison de cette variable et elle échoue toujours la même chose.
Si j'essaie une condition constante, comme 1 != 2
ou 1 = 1
cela fonctionne très bien. Y a-t-il un problème? La question connexe la plus proche que j'ai trouvée était this, mais c'était dans vb code
. Sa solution consistait à ajouter une méthode de débogage directement dans le code. Bien que je puisse le faire, je veux savoir pourquoi cela ne fonctionne pas.
Le code de la méthode
private HierarchyNodeDto GetNodeTreeThatContainsText<TRollup, TLeaf, THierarchyRelation>(HierarchyNodeDto root, string text, PreFilter preFilter, Func<TLeaf, bool> leafContainsTextFunc, bool parentContainsText) where TRollup: HierarchyNodeDto where TLeaf: HierarchyNodeDto {
dynamic rootNode = root as TRollup;
if (rootNode != null) {
if (rootNode.Nodes == null) {
return null;
}
var childNodesWithText = new List<THierarchyRelation>();
foreach (var hierarchyRelation in rootNode.Nodes) {
var isLeaf = hierarchyRelation.Node.GetType() == typeof(TransactionTypeHierarchyLeafDto) || hierarchyRelation.Node.GetType() == typeof(AccountHierarchyLeafDto);
if (!isLeaf && hierarchyRelation.Node.Name != null && hierarchyRelation.Node.Name.ToLower().Contains(text) && preFilter != PreFilter.Leafs) {
childNodesWithText.Add(hierarchyRelation);
continue;
}
var subtreeThatContainsText = this.GetNodeTreeThatContainsText<TRollup, TLeaf, THierarchyRelation>(hierarchyRelation.Node, text, preFilter, leafContainsTextFunc, rootNode.Name.ToLower().Contains(text));
if (subtreeThatContainsText == null) {
continue;
}
hierarchyRelation.Node = subtreeThatContainsText;
childNodesWithText.Add(hierarchyRelation);
}
rootNode.Nodes = childNodesWithText;
if (rootNode.Nodes.Count > 0 || (rootNode.Name.ToLower().Contains(text) && preFilter != PreFilter.Leafs)) {
return rootNode;
}
return null;
}
var rootLeaf = root as TLeaf;
return rootLeaf != null && ((leafContainsTextFunc.Invoke(rootLeaf) && preFilter != PreFilter.Nodes) || (parentContainsText && preFilter != PreFilter.Leafs)) ? rootLeaf : null;
}
J'ajoute le point d'arrêt dans la première ligne dans la foreach
Le débogueur VS2015 a plutôt beaucoup de bugs, mais cela n'a pas l'air cassé quand je l'essaie. Veillez à installer les mises à jour, au moins jusqu'à la mise à jour 2. Les solutions possibles sont d'éviter les bogues avec Outils> Options> Débogage> Général, "Utiliser le mode de compatibilité gérée" et "Utiliser les évaluateurs d'expressions C# et VB.NET". –
J'ai installé la version 14.0.25431.01 Update 3. Je vais essayer de vérifier ce mode de compatibilité –