Qua*_*Van 3 .net dll executable ironpython compilation
一直试图将这个IronPython程序编译成一个工作的.exe,过去3-4个小时没有运气.
我正在使用"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无法运行.
我用它作为指南:
我开始工作的非常简单的'HelloWorld'程序,但是我的更复杂的程序失败了.我认为我的复杂程序无法按编译运行,因为它缺少DLL?
从IronPython目录中,我复制了编译所需的所有必需的DLL(Microsoft*.dll,IronPython*.dll)以及运行编译的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
Run Code Online (Sandbox Code Playgroud)
我没有Microsoft.Scripting.Core.dll或Microsoft.Scripting.ExtensionAttribute.dll 导致我运行IronPython 2.6 for .NET 4.0
我应该有更多.dll吗?我的IronPython程序使用System.Windows.Forms以及其他一些...
谢谢你的帮助.
目标是编译这个程序并获取zip文件中的所有.DLL,以便我的兄弟可以解压缩并在他的comp上运行它,但截至目前我甚至无法在我自己的comp中运行它!有任何想法吗?
编辑:所以我弄清楚出了什么问题(请参阅下面的答案)但是现在我尝试在另一台计算机上运行应用程序时会得到这个可爱的弹出窗口:
Dang,现在我在尝试在另一台机器上运行app时遇到此错误.
要运行此应用程序,首先必须安装以下版本的.NET Framework之一:
v4.0.30319
不知道有没有办法解决这个问题.
编辑:我的修复是,我的兄弟有.NET 3.5所以我在另一台运行.NET 3.5的IronPython机器上重新编译它
是的,它成功编译了一个ran.
原因是我的来源中有未被捕获的异常.
由于某种原因的线条
import traceback
import inspect
Run Code Online (Sandbox Code Playgroud)
导致IronPython编译器抛出"ImportError",但ipy.exe Program.py运行正常.
当我尝试初始化System.Windows.Forms.WebBrowser()时,最大的错误是"ThreadStateException"错误(感谢Migol的提示)
用Google搜索,发现:
哦,问题是pyc.py没有将线程标记为STA.
修复是:
您可以在mainMethod = ...之后立即将此行添加到pyc.py
mainMethod.SetCustomAttribute(clr.GetClrType(System.STAThreadAttribute).GetConstructor(()), System.Array[System.Byte](()))
Run Code Online (Sandbox Code Playgroud)
来源: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
Run Code Online (Sandbox Code Playgroud)
(只需从您的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
Run Code Online (Sandbox Code Playgroud)
按照本指南IronPython - 如何编译exe
原来你只需要包含你在文件中导入的main:文件(我的是program.py.PYC.py负责导入其余文件.:)
编辑:实际上你要将你要编译的所有.py添加到pyc.py命令中.如果你没有编译它(它将被合并到MyApp.dll中)你可以将.py保存在App的目录中并且它仍然会运行,但是这会暴露它的来源.
希望这对某人有所帮助,带我整整一个晚上去弄明白.干杯.=)