• Python 调用.net framework写的类库的方法 详情


    原始作者“tingsking18”和 地址:http://blog.csdn.net/tingsking18/article/details/4135251地址,方便其他朋友提问和指正。

    在此基础上本人稍微了添加了些细节 以便新手们操作 

    Python 调用.net framework写的类库的方法

    准备开发工具等:

          python2.7 下载地址:http://download.csdn.net/download/wukongwu/4559974

          pywin32  下载地址:http://download.csdn.net/detail/wukongwu/4559915

          IronPython_1_1.rar 下载地址: http://download.csdn.net/detail/wukongwu/4560075

    1. 安装python2.7和对应的pywin32

    安装方法:略。

    2. 下载ironPython源代码 是C#的。

    我用的是IronPython1.1的版本, 解压缩。

    3. 用vistual studio 建立一个.NET类库工程,工程名字为:IronPython。

    4.把ironPython目录下的src子目录中的

     (1).ironPython目录的 (不要assemblyInfo.cs) 都拷贝到你的工程目录里

     (2).ironMath目录里的c#源文件(不要assemblyInfo.cs)也都拷贝到你的工程目录里。

    这个是传完的结果

    5. 修改AssemblyInfo.cs

    [assembly: ComVisible(false)]

    将false 改为true

    6. 在项目=>属性=>生成里把 为COM Interop注册 打上勾

    7. 在项目=>属性=>签名 里把为程序集签名 打上勾,选择强名称密钥文件时 选择新建,输个文件名,比如 IronPython.snk 这个密钥可以自动生成也可以手动生成

    手动生成的方法:在.Net Framework的命令行界面里用 sn -k IronPython.snk 这个命令.

    8. 编译项目生成 IronPython.dll

    9. 在.Net Framework的命令行界面里用 regasm IronPython.dll 注册COM组件

    10. 在.Net Framework的命令行界面里用 gacutil -i IronPython.dll 把库加到全局缓存里

    以上步骤是做一个连接python 与 .Net Framework的通道一样  也可以理解成 它是连接python 与 .Net Framework的桥

    这个形容可能不太正确 请大家给个合理的解释来完善 Python 调用.net framework写的类库的方法 以便新手学习

    11.注意: 现在不用在管理 IronPython类库了  我们重新建一个类库   建立.net framework 的类库。代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace test
    {
        public class testclass
        {
            public string func()
            {
                return "hello world";
            }
        }
    }

    12.正常生成test.dll

    13.我们来测试下 我把我的test.dll 拷贝到文件放在c盘下

    建立test.py调用刚才写的test.dll类库。代码:

    import win32com

    import win32com.client

    eng=win32com.client.Dispatch("IronPython.Hosting.PythonEngine")

    eng.execute("import clr")

    eng.execute("import sys")

    eng.execute("""sys.path.append('c:////test')""")

    eng.execute("print sys.path")

    eng.execute("""clr.AddReferenceToFile("C://test.dll")""")

    eng.execute("from test import *")

    eng.execute("obj = testclass()")

    eng.execute("print obj.func()")

    注意:eng.execute("""sys.path.append('c:////test')""")

    这句是将test.dll所在的路径添加到ironPython的sys.path中去。如果不加,AddReferenceToFile将会出错。

    运行  新手一定要注意 不要再python IDLE下运行 这样会看不见结果   要么直接打开 要么在cmd 环境下  python + 文件名 运行

    到此为止 结束  以上是本人心得 有什么地方不对 大家尽量提出来  以便新手与大家交流

  • 相关阅读:
    fabric-byfn.sh名利解析
    Hyperledger Fabric--byfn.sh 命令分析
    ubuntu修改网络地址
    docker常用命令
    添加daocloud加速器-18.04.2-Ubuntu
    CA/RA简介
    Redhat防火墙
    Linux上Oracle 11g启动与关闭
    redhat网络配置文件详解
    uva1349Optimal Bus Route Design
  • 原文地址:https://www.cnblogs.com/yhyjy/p/2678472.html
Copyright © 2020-2023  润新知