更改 ironpython .dll 程序集的版本信息

Changing the version information of ironpython .dll assembly

我在ironpython中编译了一个.dll文件,代码如下:

import clr

clr.CompileModules('C:/example.dll', 'C:/example.py')

本质上是compiles the .py file to .dll。 唯一的问题是它创建的文件没有关于公司、语言、文件版本等的信息。事实上,文件版本始终是:0.0.0.0.

我想知道是否有办法至少更改文件版本(将其更改为 0.0.0.0 以外的版本)。我在 Whosebug 上用谷歌搜索并在此处找到 similar topic。 我尝试了三种方法:

1) 一个Visual Studio(文件->打开-> 查找.dll,编辑->添加资源->版本单击新建。在新的版本选项卡中,更改 FILEVERSION 和 PRODUCTVERSION)

2) 另一个使用 Change version 2012 application

3) 第三个使用:Simple Version Resource Tool for Windows 1.0.10

None 他们成功了。 由于某种原因,使用 ironpython 创建的 .dll 程序集的结构看起来与使用 VB 或 C# 创建的 .NET 程序集的结构不同。

有谁知道如何将文件版本从 0.0.0.0 更改为其他版本?

谢谢。

您可以使用打包到IronPython 中的pyc.py 文件将您的文件编译成.dll 文件。该文件位于目录 IronPython 2.7\Tools\Scripts.

如果我们打开 pyc.py 进行编辑,您会看到它可以执行的不同操作。

pyc: The Command-Line Python Compiler

Usage: ipy.exe pyc.py [options] file [file ...]

Options:
/out:output_file                          Output file name (default is main_file.<extenstion>)
    /target:dll                               Compile only into dll.  Default
    /target:exe                               Generate console executable stub for startup in addition to dll.
    /target:winexe                            Generate windows executable stub for startup in addition to dll.
    @<file>                                   Specifies a response file to be parsed for input files and command line options (one per line)
    /file_version:<version>                   Set the file/assembly version
    /? /h                                     This message    

EXE/WinEXE specific options:
    /main:main_file.py                        Main file of the project (module to be executed first)
    /platform:x86                             Compile for x86 only
    /platform:x64                             Compile for x64 only
    /embed                                    Embeds the generated DLL as a resource into the executable which is loaded at runtime
    /standalone                               Embeds the IronPython assemblies into the stub executable.
    /mta                                      Set MTAThreadAttribute on Main instead of STAThreadAttribute, only valid for /target:winexe
    /file_info_product:<name>                 Set product name in executable meta information
    /file_info_product_version:<version>      Set product version in executable meta information
    /file_info_company:<name>                 Set company name in executable meta information
    /file_info_copyright:<info>               Set copyright information in executable meta information
    /file_info_trademark:<info>               Set trademark information in executable meta information

Example:
    ipy.exe pyc.py /main:Program.py Form.py /target:winexe

我个人喜欢做的一件事是将 pyc.py 从 Scripts 文件夹移动到 IronPython 文件夹以及我的 python 文件。

假设您也这样做,您将以管理员身份打开命令提示符并导航到 IronPython 文件夹。

cd "Program Files (x86)\IronPython 2.7"

那么您可能希望将 python 文件编译为 .dll 并使用 pyc.py 设置文件版本。为此,您需要输入:

ipy.exe pyc.py /main:example.py /target:dll /file_version:0.0.0.1

如果您想添加公司名称和其他项目,只需将这些选项传递给 pyc.py 脚本即可。

ipy.exe pyc.py /main:Program.py Form.py /target:winexe /file_info_company:Company