Отладка IronPython в размещенном / встроенном C # - PullRequest
0 голосов
/ 03 апреля 2019

Я занимаюсь разработкой основного приложения asp.net + IronPython. Но я столкнулся с проблемой отладки ...

Так, например, у меня есть следующий код:

Dictionary<string, object> options = new Dictionary<string, object>();
options["Debug"] = true;
ScriptEngine engine = Python.CreateEngine(options);

// output redirect
var eIO = engine.Runtime.IO;

var errors = new MemoryStream();
eIO.SetErrorOutput(errors, Encoding.Default);

var result = new MemoryStream();
eIO.SetOutput(result, Encoding.Default);

// execute script
ScriptScope scope = engine.CreateScope();
scope.SetVariable("testGlobalVar", 10);
engine.ExecuteFile(ScriptPath, scope);

в файле Python

some = "Test"

print(Test)
print("We have ->", testGlobalVar)

Работает нормально, но я не знаю, как установить точку останова в файле Python и пошагово отлаживать ее в Visual Studio, Pycharm (что угодно), при запуске его через C #.

Я нашел этот вопрос , но он почти полностью бесполезен. Я устанавливаю точку останова в файле Python, и ничего не происходит.

1 Ответ

1 голос
/ 09 апреля 2019

Так как он хорошо работает без режима отладки, как вы упомянули.Я думаю, что причина, по которой точка останова не будет достигнута в режиме отладки, заключается в том, что отладчик не может ее найти.

Пожалуйста, Go=>Debug=>Options => Снимите отметку Enable Just My Code, чтобы проверить, помогает ли это.

Примечание:

  1. Установить основное приложение .net в качестве запускаемого проекта

  2. Если снять отметку Enable Just My Code не поможет,Я предлагаю вам перейти на tools->Import/Export Settings->reset all settings, затем снова снять отметку Enable Just My Code.

После этого можно достичь точки останова, как показано ниже:

enter image description here

Кроме того: я использую консольное приложение .net для воспроизведения и тестирования, но я думаю, что оно работает аналогично веб-приложению.Любое обновление не стесняйтесь связаться со мной:)

...