2010-10-19 127 views
2

我創建了Visual Studio 2010的一個類庫項目並創造增加了以下VB.Net類:爲什麼不能IronPython的發現我的VS2010 VB.Net類庫DLL

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() 

回答

1

使用相對路徑來啓動文件。這裏是一個例子:

在我的一個項目中,啓動文件(在解決方案資源管理器中具有綠色「播放」圖標的文件)位於其中有另一個文件夾PMX的文件夾中。 PMX文件夾裏面是我試圖訪問的DLL。該DLL中有PMXlib命名空間。該PMXlib命名空間有一個名爲「PMX」級。 因此,目錄結構如下:

PMX\ 
    PMXlib.dll 
main.py 

這是我用來訪問PMXlib DLL中PMX類的代碼。

import clr 
clr.AddReferenceToFileAndPath("PMX\PMXlib.dll") 
from PMXlib import PMX 
#PMXlib is the namespace name. PMX is the class name inside the DLL. 
+0

據http://msdn.microsoft.com/en-us/library/17k74w0c.aspx,「因爲類庫沒有切入點,他們對這個屬性的唯一選項是(無)。 「你引用的啓動文件和VS2010中的啓動對象有區別嗎? – ravi77o 2010-10-19 16:50:15

+0

這就是我的意思:http://imgur.com/RbeZY.png 正如你所看到的,'app.py'是我當前的啓動文件(其上有一個綠色的圖標),我可以改變的啓動文件通過右擊任何其他文件。這隻會改變什麼.py文件發送到ipy.exe來啓動您的程序。 – Aphex 2010-10-19 17:05:32

+0

我注意到,你指的是你正在做一個類庫的事實(大概是從其他應用程序使用)。在這種情況下,請查看是否可以使用與類庫相同的文件夾中的DLL。 – Aphex 2010-10-19 17:14:20

相關問題