zoukankan      html  css  js  c++  java
  • 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 + 文件名 运行

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

  • 相关阅读:
    Unity 3(一):简介与示例
    MongoDB以Windows Service运行
    动态SQL中变量赋值
    网站发布IIS后堆栈追踪无法获取出错的行号
    GridView Postback后出错Operation is not valid due to the current state of the object.
    Visual Studio 2010 SP1 在线安装后,找到缓存在本地的临时文件以便下次离线安装
    SQL Server 问题之 排序规则(collation)冲突
    IIS 问题集锦
    linux下安装mysql(ubuntu0.16.04.1)
    apt-get update 系列作用
  • 原文地址:https://www.cnblogs.com/yhyjy/p/2678472.html
Copyright © 2011-2022 走看看