20

私は CPython を使用しており、C# dll を持っています。Python for .NET を使用して会話させようとしています。これを既存の CPython システムに統合する必要があるため、IronPython を使用できません。

私は Python for .NET はまったく初めてで、実際には Python の経験はほとんどなく、C# の経験もありません。私の質問が非常に基本的なように思われる場合は、ご容赦ください。

私はPython 2.7.3を使用しており、pythonnet-2.0-alpha2-clr2.0_131_py27_UCS2をダウンロードし、pyfornet_testという名前のフォルダーに解凍しました。このフォルダーには、使用しようとしているdll(DotNet4Class.dllと呼ばれる)も含まれています

次に、これを実行します。

import sys

import os

import clr

sys.path.append(r"C:\pyfornet_test")

clr.AddReference("DotNet4Class.dll")

これは私にこのエラーを与えます:

System.IO.FileNotFoundException: Unable to find assembly 'DotNet4Class.dll'.
   at Python.Runtime.CLRModule.AddReference(String name) in C:\Users\Barton\Documents\Visual Studio 2008\Projects\PyShar
p\trunk\pythonnet\src\runtime\moduleobject.cs:line 375

アドバイスをいただければ幸いです。ありがとうございました!

4

7 に答える 7

7

DotNet4Class.dll.NET 4 に対してビルドされていますか? dllの命名に基づいていると思います。

ここで問題に注意してください: http://sourceforge.net/tracker/?func=detail&aid=3293169&group_id=162464&atid=823891

.NET 4.0 でアセンブリをビルドすると、clr.AddReference が失敗する - ID: 3293169

私は解決策を読みましたが、基本的には、.NET 4 で .NET プロジェクト用の python を再構築して再コンパイルする必要があります。

また、このようなプロジェクトは、積極的に開発され、多くの人々によって使用されていませんが、一般的に微妙な特異性を持っているため、このような問題を回避するにはプラットフォームの知識が不可欠であることにも言及します. 常に問題を抱えているpythonまたは.NETについてあまり理解せずに、このソリューションをハックしようとしているようです。

于 2012-11-06T21:47:38.273 に答える
5

私はこのようなコードを持っています (私は MyRightClickMenuService.dll を my と同じディレクトリにコピーしましたscript.py)。.Net 4.0 に対して構築されています。

# script.py
import clr
import os
import sys
sys.path.append(os.path.dirname(__file__))

clr.AddReference('MyRightClickMenuService')
clr.AddReference('System')
clr.AddReference('System.Security')

from MyRightClickMenuService import (
    AclSecuredNamedPipeBinding,
    MyMenuItem,
    MyContextMenuService,
    etc
)
于 2014-11-27T01:21:28.590 に答える
5

clr.FindAssembly を試しましたか?

import clr
import sys
assemblydir = r"C:\pyfornet_test"
assemblypath = r"C:\pyfornet_test\DotNet4Class.dll"
sys.path.append(assemblydir)
clr.FindAssembly(assemblypath)

なぜ機能するのかわかりませんが、このコードは私のコンピューター (Python 2.7、.NET4) で機能します。

于 2015-06-25T09:28:05.373 に答える