如何在IronPython中使用.NET API?

时间:2013-11-29 15:20:10

标签: .net ironpython

我尝试为RegioGraph(regiograph.de)写一个makro。我几乎不了解.NET。 RegioGraph有一个描述API本身的帮助文件,但是关于如何使用它的信息非常有限。我发现的唯一有用的参考是C#中的这个示例:http://www.cgo.se/wordpress/2010/10/14/regiograph-api/

根据评论提出建议后更新2013-12-11:

我发现RegioGraph程序集是.NET 2.0,所以我安装了相应的IronPython-2.6.2-Net20.msi:http://download-codeplex.sec.s-msft.com/Download/Release?ProjectName=ironpython&DownloadId=159513&FileTime=129321579152370000&Build=20841

我想获得一个Application对象:

IronPython 2.6.2 (2.6.10920.0) on .NET 2.0.50727.7905
Type "help", "copyright", "credits" or "license" for more information.
>>> import clr
>>> clr.AddReferenceToFileAndPath('C:/Program Files/GfK GeoMarketing/RegioGraph Planung 11/GfK.GeoMarketing.Api.dll')
>>> import GfK.GeoMarketing.Api
>>> app = GfK.GeoMarketing.Api.RegioApplication()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IOError: [Errno 2] Die Datei oder Assembly "GfK.GeoMarketing.Api, Version=11.0.0.96, Culture=neutral, PublicKeyToken=49e059cfaef07841" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.

使用Fusion协议进行检查表明仅在全局程序集缓存(GAC)和IronPython程序文件夹中搜索程序集。因此,解决方法是将GfK * .dll复制到C:/ Program Files / IronPython 2.6 /.

当我安装Visual Studio Express 2013桌面时,我得到了这个简短的C#程序:

using GfK.GeoMarketing.Api;

class RGStart
{
    static void Main()
    {
        RegioApplication application = new RegioApplication();
    }
}

我必须遵循这些步骤(尝试翻译德语术语):

  • 新项目,已安装/ templates / Visual C#/ Windows / console应用程序,名称:RGStart
  • 项目,RGStart属性,应用程序,目标框架.NET 2.0
  • 项目,RGStart属性,make / build,目标平台x86
  • 删除无效引用(在项目地图资源管理器中标记)
  • 项目,添加引用,浏览,C:\ Program Files \ GfK GeoMarketing \ RegioGraph Planung 11
    • GfK.GeoMarketing.Api.dll
    • GfK.GeoMarketing.Gui.dll
    • GfK.GeoMarketing.ManagedBackend.dll
  • 替换C#代码(Program.cs)
  • F5,没有更多错误消息,应用程序对象允许访问RegioGraph

1 个答案:

答案 0 :(得分:0)

先决条件:工具gacutil.exe来自Microsofts“NETFX 4.5.1 Tools”; fuslogvw.exe和ildasm.exe也可能有用。这些是Windows SDK的一部分,我认为它是“Visual Studio Express 2013 for Windows Desktop”安装的一部分。

  1. 将RegioGraph API程序集添加到全局程序集缓存(GAC):

    gacutil /i C:\Program Files\GfK GeoMarketing\RegioGraph Planung 11\GfK.GeoMarketing.Api.dll
    

    同样至少为.Shared,.Interfaces,.ManagedBackend,.LowLevelBackend,.Projections。最好将所有GfK。*。dll安装到GAC中。

  2. 在IronPython控制台中使用以下命令:

    import clr
    clr.AddReference('GfK.GeoMarketing.Api')
    import GfK.GeoMarketing.Api
    app = GfK.GeoMarketing.Api.RegioApplication()
    proj = app.OpenProject('path\\to\\.gfk\\file')
    # ... yeah, got it! ...
    

    在Visual Studio中尝试使用C#,RegioGraph API似乎与.NET 2.0绑定。但是,此指令适用于当前的IronPython(.NET 4.0上的2.7.4)以及古老的.NET 2.0-IronPython。