gpt4 book ai didi

.net - IronPython -> .exe 可执行并与所有 DLL 一起分发帮助

转载 作者:行者123 更新时间:2023-12-01 23:26:07 25 4
gpt4 key购买 nike

过去 3-4 小时一直在尝试将此 IronPython 程序编译成可运行的 .exe,但没有成功。

我正在使用“IronPython 2.6 for .NET 4.0”附带的 pyc.py

D:\IronTestCompile>ipy pyc.py file1.py file2.py/out:Program/main:program.py/target:exe

程序编译出 Program.dll & Program.exe 但 Program.exe 无法运行。

我用这个作为指南:

IronPython - how to compile exe

我开始使用非常简单的“HelloWorld”程序,但我的更复杂的程序失败了。我在想我的复杂程序无法按编译运行是因为它缺少 DLL?

From IronPython directory I copied all the necessary DLL's (Microsoft*.dll, IronPython*.dll) that are needed for compilation and as run-time prerequisite to run compiled HelloWorld.exe.

如何找出我的 .exe 无法运行的原因?或者我如何确定目录中需要包含哪些 .NET DLL 文件? (假设我必须将所有 .NET DLL 放在 .exe 目录示例 C:\WINDOWS\Microsoft.NET\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll -> D:\IronTestCompile ? )

我在程序目录中仅有的 DLL 是:

Microsoft.Scripting.dll
IronPython.dll
IronPython.Modules.dll
Microsoft.Dynamic.dll

我没有 Microsoft.Scripting.Core.dllMicrosoft.Scripting.ExtensionAttribute.dll cause am running IronPython 2.6 for .NET 4.0

我应该有更多的 .dll 吗?我的 IronPython 程序使用 System.Windows.Forms 以及其他一些...

感谢您的帮助。

目标是编译这个程序并获得 zip 文件中的所有 .DLL,以便我的兄弟可以解压缩并在他的 comp 上运行它,但到目前为止我什至不能在我自己的 comp 上运行它!有什么想法吗?


编辑:所以我弄清楚出了什么问题(见下面我的回答)但是现在当我尝试在另一台计算机上运行该应用程序时,我得到了这个可爱的弹出窗口:

该死,现在我尝试在另一台机器上运行应用程序时遇到此错误。


MyApp.exe - .NET Framework 初始化错误

要运行此应用程序,您首先必须安装以下版本的 .NET Framework 之一:

v4.0.30319

请联系您的应用程序发布者以获取有关获取适当版本的 .NET Framework 的说明。

确定

想知道是否有任何方法可以解决这个问题。

编辑:我的修复是,我的兄弟有 .NET 3.5,所以我在另一台运行 .NET 3.5 的 IronPython 的机器上重新编译它

最佳答案

是的,编译成功了。

原因是我的源代码中有未捕获的异常。

由于某种原因,线条

import traceback
import inspect

导致 IronPython 编译器抛出“ImportError”,但 ipy.exe Program.py 运行正常。

当我尝试初始化 System.Windows.Forms.WebBrowser() 时,最大的错误是“ThreadStateException”错误(感谢 Migol 的提示)

Google 了一下,发现:

Oh, the problem is that pyc.py doesn't mark the thread as STA.

解决方法是:

You can add this line to pyc.py right after mainMethod = ...

mainMethod.SetCustomAttribute(clr.GetClrType(System.STAThreadAttribute).GetConstructor(()), System.Array[System.Byte](()))

来源:http://www.mail-archive.com/users@lists.ironpython.com/msg07725.html

甜甜的。 :)

工作、编译和运行,结果是“IronPython 2.6 for .NET 4.0”所需的唯一 DLL 是

IronPython.dll
IronPython.Modules.dll
Microsoft.Scripting.dll
Microsoft.Dynamic.dll
Mycrosoft.Scripting.Debugging.dll

(只需从 C:\Program Files\IronPython 2.6 for .NET 4.0\ 目录或安装 IronPython 的任何位置复制并粘贴这些文件)

另外,我用来编译脚本的确切命令是:

D:\IronTestCompile\project_3>"c:\Program Files\IronPython 2.6 for .NET 4.0\ipy.exe" pyc.py Form1.py utils.py project.py /out:MyApp /main:program.py /target:winexe

遵循本指南 IronPython - how to compile exe

事实证明,您只需将导入的文件包含在 main: 文件中(我的文件是 program.py。PYC.py 负责导入其余部分.:)

编辑:实际上,您会将要编译的所有 .py 添加到 pyc.py 命令中。如果您不编译它(它将合并到 MyApp.dll 中),您可以将 .py 保留在 App 的目录中,它仍然会运行,但这会暴露它的源代码。

希望这对某人有帮助,我花了整整一个晚上才弄明白。干杯。 =)

关于.net - IronPython -> .exe 可执行并与所有 DLL 一起分发帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3751258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com