我在Visual Studio 2010中创建了一个类库项目并创建了添加以下VB.Net类:
Public Class Dumb
Private name As String
Public Sub New(ByVal newName As String)
name = newName
End Sub
Public Sub sayHi()
System.Console.WriteLine("Hi " & name)
End Sub
End Class
我构建了解决方案并生成了一个DLL文件(比如PATH_TO_NEW_DLL)。
在IronPython中,当我尝试clr.AddReferenceToFileAndPath(PATH_TO_NEW_DLL)时,我收到以下错误。我的计算机上存在 DOES 文件。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: System.IO.IOException: file does not exist: [PATH_TO_NEW_DLL]
at IronPython.Runtime.ClrModule.AddReferenceToFileAndPath(CodeContext context, String file)
at IronPython.Runtime.ClrModule.AddReferenceToFileAndPath(CodeContext context, String[] files)
at Microsoft.Scripting.Utils.ActionHelper`2.Invoke(Object arg0, Object arg1)
at Microsoft.Scripting.Utils.ReflectedCaller.Invoke(Object[] args)
at Microsoft.Scripting.Actions.Calls.MethodCandidate.Caller.Call(Object[] args, Boolean& shouldOptimize)
at IronPython.Runtime.Types.BuiltinFunction.BuiltinFunctionCaller`2.Call1(CallSite site, CodeContext context, TFuncType func, T0 arg0)
at System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2)
at <unnamed>$28.<unnamed>(CodeContext $globalContext, FunctionCode functionCode) in <stdin>:line 1
at IronPython.Compiler.PythonScriptCode.RunWorker(CodeContext ctx)
at IronPython.Compiler.PythonScriptCode.Run(Scope scope)
at IronPython.Hosting.PythonCommandLine.<>c__DisplayClass1.<RunOneInteraction>b__0()
答案 0 :(得分:1)
使用启动文件的相对路径。这是一个例子:
在我的一个项目中,启动文件(解决方案资源管理器中具有绿色“播放”图标的文件)位于其中包含另一个文件夹PMX
的文件夹中。在PMX
文件夹中是我试图访问的DLL。此DLL中包含PMXlib
命名空间。 PMXlib
命名空间有一个名为“PMX
”的类。
所以,目录结构如下:
PMX\
PMXlib.dll
main.py
这是我用来访问PMX
DLL中的PMXlib
类的代码。
import clr
clr.AddReferenceToFileAndPath("PMX\PMXlib.dll")
from PMXlib import PMX
#PMXlib is the namespace name. PMX is the class name inside the DLL.