VS2012中的DLL加载(C#/ IronPython / C#)

时间:2014-11-30 01:01:17

标签: c# .net dll ironpython

我想在Visual Studio 2012中调试我的应用程序的各个部分。

我有C#可执行文件,可与Oracle.DataAccess dll一起使用。它工作正常。 在其中调用IronPython运行时,它也可以正常工作。 在这些IronPython模块中,调用了来自主C#应用程序的对象,它可以在Oracle dll中正常工作。

如果IronPython脚本是独立调用的,那么它工作正常并且也可以使用C#对象。

但是在这种情况下,C#对象没有看到Oracle dll。

要调试IronPython脚本,我必须创建单独的Python解决方案,以便我无法配置我的C#解决方案。所以我无法控制C#引用。 GAC有正确的Oracle dll,但如何告诉C#dll使用它?

反之亦然如果我在C#解决方案中我可以管理引用,那么我就无法添加py文件并进行调试。

我可以通过什么方式配置VS以便能够分别使用双入口C#或IronPython来运行/调试我的应用程序?

1 个答案:

答案 0 :(得分:1)

您可以尝试复制“对我有用”的内容。创建包含以下内容的解决方案:

  • python project(ironpython)
  • C#项目

使用标准VS机制向C#项目添加对所需oracle库(Oracle.DataAccess.dll)的引用。 C#项目还应包含一个post build步骤,将生成的dll和pdb复制到python脚本可以找到它的位置。在我的案例python项目的根目录。

您的python项目被选为启动项目。 我用Ctrl-F5和F5来启动它。在这两种情况下,事情按预期工作。 在调试模式下,我能够在python和引用的C#模块中设置并命中断点。我可以看到正在加载的oracle库(调试器的输出窗口)。

然而:

  • 堆栈跟踪仅为C#。
  • Visual Studio 2013 Update 4与PTVS 2.1一起在调试时崩溃。