Les points d'arrêt de tâche de script SSIS ne fonctionnent pas lors de

Les points d'arrêt de tâche de script SSIS ne fonctionnent pas lors de l'utilisation d'Interop Excel

Lorsque j'ajoute la bibliothèque d'objets Microsoft Excel (référence Microsoft.Office.Interop.Excel), les points d'arrêt placés dans le code c# cessent de fonctionner. Et je dois déboguer en utilisant MessageBox.Show(). Est-ce une solution pour faire fonctionner les points d'arrêt ?

Comment reproduire :

  1. Créez un nouveau package SSIS.
  2. Ajouter une tâche de script.
  3. Modifiez la tâche de script avec un code simple, par exemple :

    // À FAIRE : Ajoutez votre code ici

    string test = "test";
    
    MessageBox.Show("test " + test);
    
    Dts.TaskResult = (int)ScriptResults.Success;
    
  4. Placez un point d'arrêt sur la ligne MessageBox, puis lancez le débogage (F5). Le point d'arrêt fonctionne !

  5. Modifiez à nouveau la tâche de script, ajoutez une référence à la bibliothèque d'objets Microsoft Excel 16.0 (section Objets COM).
  6. Essayez de déboguer à nouveau. Le point d'arrêt ne fonctionne pas !
  7. Vous avez compris.

J'utilise DataTools (Visual Studio 2015) sur Windows 7 32 bits, le framework cible est .NET Framework 4.5.

Montrez la meilleure réponse

Ce serait génial si vous pouviez fournir un exemple reproductible minimal. Si vous supprimez la référence, le problème s'arrête-t-il ?

Is it a solution? Bien sûr, utiliser MessageBox.Show() est une solution, mais pas la meilleure. Vous pouvez également vous connecter à un fichier. Sans un exemple de code pour démontrer ce que vous faites, nous ne pouvons pas faire grand-chose.

Il y a de nombreuses raisons pour lesquelles vos points d'arrêt ne fonctionnent plus, mais sans comprendre les spécificités de votre situation, il est presque impossible de dire pourquoi.

@DanWilson, la seule raison est d'ajouter Interop Excel. Rien d'autre n'a été changé

Veuillez fournir du code, y compris la ou les lignes où vous essayez de casser. Indiquez la version d'Excel Interop que vous utilisez. Fournissez la version de votre framework de projet. Nous avons besoin de détails.

@DanWilson fait

Si vous supprimez la référence, le problème s'arrête-t-il ?

@mjwills Oui. Lorsque vous ajoutez la bibliothèque d'objets Microsoft Excel 16.0, VS ajoute trois références : Microsoft.Office.Interop.Excel, Microsoft.Office.Core, VBIDE. Donc, si vous ne supprimez que ces 3 références, le point d'arrêt recommence à fonctionner.

Avez-vous eu de la chance de trouver une solution à cela?

Cela se produit parce qu'Excel.Interop est une extension COM et que le code C# avec des extensions COM ne peut pas utiliser de points d'arrêt. Donc, j'utilise MessageBox.Show ou une classe statique qui enregistre la chaîne donnée dans la table SQL pour voir ce qui se passe dans mon code C#