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

 

版权声明

请尊重原创作品。转载请保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正。

 

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

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

安装方法:略。

 

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

我用的是IronPython1.1的版本,从codeplex网站下载IronPython_1_1.rar。解压缩。

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

ironPython目录下的src子目录中的ironPython目录的ironMath目录里的c#源文件(不要assemblyInfo.cs)都考到你的工程目录里

Python 调用.net framework写的类库的方法_第1张图片

在工程里增加刚考来的源文件。

 

Python 调用.net framework写的类库的方法_第2张图片

 

4. 修改AssemblyInfo.cs

[assembly: ComVisible(false)]

false 改为true

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

 

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

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

Python 调用.net framework写的类库的方法_第3张图片

7. 编译项目生成 IronPython.dll

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

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

10. 建立.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";

        }

    }

}

11. 建立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("abc.dll")""")

eng.execute("from test import *")

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

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

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

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

你可能感兴趣的:(.net,python,C#,assembly,import,Interop)