Autofixture: Existe-t-il un moyen d'identifier quelle propriété est à l'origine d'une exception ?

Créé le 7 juil. 2017  ·  12Commentaires  ·  Source: AutoFixture/AutoFixture

Salut les gars,

Selon mon commentaire sur un autre problème , j'obtiens une System.OverflowException : "La valeur était soit trop grande, soit trop petite pour une décimale."

Je m'attends entièrement à ce que cela soit causé par un problème avec mes modèles sous-jacents. Tenter d'identifier le domaine en question s'avère difficile, en raison de la nature hiérarchique complexe des objets.

Existe-t-il un moyen de déboguer le processus AutoFixture pour déterminer où il se bloque ?

Merci beaucoup,
À M

Pour référence, voici la trace de la pile :

System.OverflowException : la valeur était soit trop grande, soit trop petite pour une décimale.
à System.Decimal..ctor (Valeur double)
à System.Double.System.IConvertible.ToDecimal (fournisseur IFormatProvider)
à System.Convert.ChangeType (valeur de l'objet, type conversionType, fournisseur IFormatProvider)
à Ploeh.AutoFixture.DataAnnotations.RangeAttributeRelay.Create (RangeAttribute rangeAttribute, demande d'objet)
à Ploeh.AutoFixture.DataAnnotations.RangeAttributeRelay.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TracingBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TerifyingWithPathSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.RecursionGuard.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.AutoPropertiesCommand 1.Execute(Object specimen, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.Postprocessor 1.Create (Requête d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TracingBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TerifyingWithPathSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.RecursionGuard.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.Postprocessor 1.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.TracingBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.TerminatingWithPathSpecimenBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.RecursionGuard.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.Postprocessor 1.Create (Object request, ISpecimenContext context)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TracingBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TerifyingWithPathSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.RecursionGuard.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.AutoPropertiesCommand 1.Execute(Object specimen, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.Postprocessor 1.Create (Requête d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TracingBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TerifyingWithPathSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.RecursionGuard.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.StableFiniteSequenceRelay.<>c__DisplayClass0_0.b__0(Objet requis)
à System.Linq.Enumerable.WhereSelectEnumerableIterator 2.MoveNext() at System.Linq.Enumerable.WhereSelectEnumerableIterator 2.MoveNext()
à System.Collections.Generic.List 1..ctor(IEnumerable 1 collection)
à System.Linq.Enumerable.ToList[TSource](IEnumerable 1 source) at Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.TracingBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.TerminatingWithPathSpecimenBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.RecursionGuard.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.Postprocessor 1.Create(Object request, ISpecimenContext context)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TracingBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TerifyingWithPathSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.RecursionGuard.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.EnumerableRelay.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TracingBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TerifyingWithPathSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.RecursionGuard.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.Postprocessor 1.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.TracingBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.TerminatingWithPathSpecimenBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.RecursionGuard.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.Postprocessor 1.Create (Requête d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TracingBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TerifyingWithPathSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.RecursionGuard.Create (demande d'objet, contexte ISpecimenContext)
à System.Linq.Enumerable.WhereSelectArrayIterator 2.MoveNext() at System.Collections.Generic.List 1..ctor(IEnumerable 1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable 1 source)
à Ploeh.AutoFixture.Kernel.MethodInvoker.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TracingBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TerifyingWithPathSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.RecursionGuard.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TracingBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TerifyingWithPathSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.RecursionGuard.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.Postprocessor 1.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.TracingBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.TerminatingWithPathSpecimenBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.RecursionGuard.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.Postprocessor 1.Create (Requête d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TracingBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TerifyingWithPathSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.RecursionGuard.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.AutoPropertiesCommand 1.Execute(Object specimen, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.Postprocessor 1.Create (Requête d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TracingBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TerifyingWithPathSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.RecursionGuard.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.Postprocessor 1.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.TracingBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.TerminatingWithPathSpecimenBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.RecursionGuard.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.Postprocessor 1.Create (Requête d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TracingBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TerifyingWithPathSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.RecursionGuard.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.AutoPropertiesCommand 1.Execute(Object specimen, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.Postprocessor 1.Create (Requête d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TracingBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TerifyingWithPathSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.RecursionGuard.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.Postprocessor`1.Create (Requête d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TracingBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.TerifyingWithPathSpecimenBuilder.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.Kernel.RecursionGuard.Create (demande d'objet, contexte ISpecimenContext)
à Ploeh.AutoFixture.SpecimenFactory.Create T
à Ploeh.AutoFixture.SpecimenFactory.Create T
à AccountsDispatcher.Tests.QBAddSalesReceiptTests.AddReceipt_WhenCalled_SavesToDataService() dans C:\Users\twright\Documents\Visual Studio 2015\Projects\Redacted\Redacted.cs:line 37

question

Tous les 12 commentaires

C'est une référence de plus pour implémenter #694. Actuellement, je vous suggère les éléments suivants :

  1. Mise à jour vers l'AutoFixture 3.50.3 (ses symboles sont présents dans le flux).
  2. Ajoutez le flux de symboles https://nuget.smbsrc.net à VS.
  3. Cochez l'option Enable Source Server support dans les options de débogage VS.

Configurez VS pour qu'il s'arrête sur les exceptions. La prochaine fois que l'exception se produira, vous devriez pouvoir naviguer dans la trace de la pile et voir quelles requêtes sont présentes sur la pile :
image

Chaque traitement de requête commence par RecursionGuard (et des sous-requêtes ultérieures sont créées), vous pouvez donc utiliser ces invocations de méthode comme indicateur de début de "frame".

Une fois que vous avez trouvé la chaîne de requête complète, vous devez comprendre quelle propriété exacte cause le problème, afin que nous puissions simplifier les étapes de reproduction.

Cette approche devrait fonctionner dans n'importe quelle version de VS, mais je l'ai testée avec VS 2017.

Salut @zvirja ,

Merci pour la réponse. Malheureusement VS ne semble pas pouvoir trouver les symboles sur https://nuget.smbsrc.net :

image

Sont-ils disponibles en téléchargement n'importe où ?

Merci beaucoup,
À M

Pourriez-vous s'il vous plaît vérifier que vous avez mis à jour AutoFixture vers le 3.50.3 le plus récent ? Il semble que les symboles ne soient pas disponibles pour les versions AF précédentes. Veuillez également spécifier la version VS et la version du framework cible que vous utilisez - c'est très étrange 😕

Bien sûr, vous pouvez les télécharger à partir des artefacts de build . Cependant, je ne suis pas sûr que la fonction Source fonctionnera bien si vous spécifiez le fichier pdb manuellement.

OK, certainement en utilisant 3.50.3 :

image

J'utilise VS15 avec ReSharper. Mon projet de test visait 4.5.2, mais je viens de le changer en 4.5 pour correspondre au projet SUT - malheureusement, cela n'a pas aidé.

Quoi qu'il en soit, j'ai pu télécharger le fichier PDB à partir des artefacts de construction et le charger manuellement. Et (roulement de tambour s'il vous plaît) j'ai pu trouver le problème.

Enfoui au plus profond de mon arbre d'objets, j'ai retracé le problème à ceci :

[Range(0.0, Double.MaxValue)]
public decimal Width { get; set; }

Ce qui était un peu un moment de tête au bureau !

Si vous voulez aller au fond du problème SrcSrv, je serai ravi de vous aider. Sinon (si j'étais une anomalie), je pense que nous pouvons clore le problème en toute sécurité maintenant.

Merci pour votre aide!

À M

C'est bien que le problème initial ait été résolu! ??

En ce qui concerne les symboles, je ne sais même pas comment résoudre ce problème :open_mouth: je viens d'essayer cette approche sur quelques machines (VS 2015 + R# + Symbol Server + option Enable Source Server support ) et tout a bien fonctionné. Quel est exactement le problème - les symboles ne sont pas trouvés ou les sources ne s'ouvrent pas ?

Juste pour supprimer les caches - pourriez-vous s'il vous plaît tester cela avec une solution simple ? J'ai installé AutoFixture + XUnit et mis un point d'arrêt au constructeur :

public class TestContainer
{
  [Fact]
  public void Run()
  {
    var f = new Fixture();
    f.Create<ClassForBreakpoint>();
  }

  public class ClassForBreakpoint
  {
    public ClassForBreakpoint()
    {
      //put pb here.
    }
  }
}

Veuillez également vérifier que vous pouvez ouvrir le flux de symboles dans le navigateur, afin qu'il soit accessible :) Et une autre chose est de vous assurer que le dossier Cache est spécifié sur la page des options de configuration des paramètres de

Pour reprendre votre dernier point en premier, je vois un document XML très concis à cette URL :

<service xml:base="https://nuget.smbsrc.net/">
    <workspace>
        <atom:title type="text">Default</atom:title>
        <collection href="Packages">
            <atom:title type="text">Packages</atom:title>
        </collection>
    </workspace>
</service>

Je ne suis pas sûr de ce que je suis censé voir, est-ce normal ?

J'ai recréé un projet simple :

using System;
using NUnit.Framework;
using Ploeh.AutoFixture;

namespace AutofixtureTest
{
    [TestFixture]
    public class Tests
    {
        [Test]
        public void Test1()
        {
            var fix = new Fixture();
            fix.Create<ClassUnderTest>();
        }
    }

    public class ClassUnderTest
    {
        public ClassUnderTest()
        {
            Console.WriteLine("in ctor");
        }
    }
}

_(J'ai utilisé NUnit, au lieu de XUnit - en supposant que cela ne soit pas pertinent ?)_

Malheureusement, j'ai le même problème - aucun symbole n'est chargé.

Oh, et le dossier de cache semble fonctionner - il a été rempli de symboles des serveurs MS.

Tout semble aller bien. Oui, on s'attend à ce que vous obteniez un court document XML sur ce site.

Pourriez-vous partager le journal des informations sur le chargement des symboles ?
image

Essayez également d'ajouter une barre oblique finale - cela m'a parfois aidé (comme https://nuget.smbsrc.net/ ) ou sans https (c'est- http://nuget.smbsrc.net/ dire

Eh bien, essayez d'ajouter toutes les configurations possibles en tant que SymbolServers :

  • https://nuget.smbsrc.net/
  • https://nuget.smbsrc.net
  • http://nuget.smbsrc.net/
  • http://nuget.smbsrc.net

Cela semble étrange mais cela aide et je ne parviens pas à atteindre des symboles particuliers en utilisant un symbole particulier, tandis que d'autres fonctionnent bien. Il semble que les serveurs MS se comportent très bien 😩

C'est bizarre ! Je peux accéder à cette URL dans mon navigateur, mais VS signale qu'elle n'est pas disponible :

SYMSRV : https://nuget.smbsrc.net : non disponible

https://nuget.smbsrc.net : Symboles introuvables sur le serveur de symboles.
SYMSRV : C:\Users\twright\SrcSrv Symbols\Ploeh.AutoFixture.pdb\B3542BA9173C405197A5287ABC9B27821\Ploeh.AutoFixture.pdb - fichier introuvable

* ERREUR : HTTP_STATUS_NOT_FOUND

* ERREUR : HTTP_STATUS_NOT_FOUND

* ERREUR : HTTP_STATUS_NOT_FOUND

Comme vous l'avez suggéré, j'ai également essayé les combinaisons http/https et slash de fin. Je me demande si une règle de pare-feu farfelue bloque le trafic de VS ? Je vais le soulever avec notre équipe informatique.

En fait, il essaie de télécharger le fichier suivant : https://nuget.smbsrc.net/Ploeh.AutoFixture.pdb/B3542BA9173C405197A5287ABC9B27821/Ploeh.AutoFixture.pd_ (ou http://nuget.smbsrc.net/Ploeh.AutoFixture.pdb/B3542BA9173C405197A5287ABC9B27821/Ploeh.AutoFixture.pd_ ). Je ne sais pas pourquoi, mais parfois VS échoue.

Cela ressemble à des problèmes avec VS ou Symbol Server, car tout y est présent.

Néanmoins, cela devrait être corrigé peu de temps après le passage à l'approche SourceLink .

D'accord - SourceLink semble beaucoup plus simple.

Je vais clore ce sujet pour l'instant alors.

Merci pour votre aide. Et désolé, nous n'avons pas pu conclure sur le smbsrc.

À M

Cette page vous a été utile?
0 / 5 - 0 notes