带断点的嵌入式 IronPython 调试

问题描述 投票:0回答:1

我们的代码库主要用 C# 编写,并使用 IronPython 3.4 编写一些脚本功能。直到最近,我们的项目还基于过时的 .Net Framework 4.8,但最近转向了 .Net 8。

有一件奇怪的事情困扰着我们:以 .Net Framework 作为目标,我们可以在 Visual Studio 中加载 python 脚本文件并设置断点,这些断点在执行脚本时很好地触发。 转移到 .Net 8 后,这不再起作用。

我创建了一个最小的工作示例来确认此行为:

using IronPython.Hosting;
using Microsoft.Scripting.Hosting;
using Microsoft.Scripting.Runtime;
using System;
using System.Collections.Generic;

namespace ScriptTest
{
    internal class Program
    {
        static void Main(string[] args) {
            ScriptEngine pythonEngine = null;
            ScriptScope pythonScope = null;

            Dictionary<string, object> options = new Dictionary<string, object>();
            options["Debug"] = ScriptingRuntimeHelpers.True;

            pythonEngine = Python.CreateEngine(options);
            pythonScope = pythonEngine.CreateScope();

            ScriptSource pythonSrc = pythonEngine.CreateScriptSourceFromFile(@".\Test.py");
            CompiledCode compiled = pythonSrc.Compile();
            compiled.Execute(pythonScope);
        }
    }
}

使用以下非常简单的 Test.py 文件:

print('Test')

我注意到的一件事是,在 .Net Framework 版本中,一旦 Python 脚本执行,就会加载一个名为 Snippets.debug.scripting 的符号“文件”。这在 .Net 8 版本中不会发生。

有什么想法如何在 .Net 8 上使用断点吗?也许这只是一些 Visual Studio 设置,但我还没有找到线索。

ironpython visual-studio-debugging .net-8.0
1个回答
0
投票

你的意思是你的Python文件(Test.py)中的断点没有被.Net8命中吗?

如果是,我建议您检查是否已启用

Enable Just My Code
。 请转到=>调试=>选项=>取消选中仅启用我的代码

如果取消选中仅启用我的代码没有帮助,请转到工具->导入/导出设置->重置所有设置,然后再次取消选中启用仅我的代码以查看问题是否仍然存在。

© www.soinside.com 2019 - 2024. All rights reserved.