2009-05-28 12 views
2

Ich versuche eine Testanwendung zu entwickeln, um die Machbarkeit einer Click Once Smart Client-App zu testen, die auch eine durch Einbetten von IronPython anpassbare Regel-Engine verwendet.IronPython, klicken Sie einmal, .NET 2.0 Fehler - Gedanken?

Bisher haben alle Benutzer außer mir diesen Fehler (siehe unten) beim Aufruf der Skript-Engine.

Muss ich etwas Spezielles tun, um die Bereitstellung der IronPython- und Scripting-Assemblies zu erzwingen? Ich dachte, das wäre automatisch, weil sie in meinem Projekt referenziert wurden. Ist das in .NET 2.0 nicht machbar?

Gedanken?

 
************** Exception Text ************** 
System.MissingMethodException: Method not found: 'Void System.Reflection.Emit.DynamicMethod..ctor(System.String, System.Type, System.Type[], Boolean)'. 
    at Microsoft.Scripting.Utils.Helpers.CreateDynamicMethod(String name, Type returnType, Type[] parameterTypes) 
    at Microsoft.Linq.Expressions.Compiler.Snippets.CreateDynamicMethod(String name, Type returnType, Type[] parameterTypes) 
    at Microsoft.Linq.Expressions.Compiler.LambdaCompiler.CreateDynamicLambdaCompiler(CompilerScope scope, String methodName, Type returnType, IList`1 paramTypes, IList`1 paramNames, Boolean closure, Boolean emitDebugSymbols, Boolean forceDynamic) 
    at Microsoft.Linq.Expressions.Compiler.LambdaCompiler.CompileLambda(LambdaExpression lambda, Type delegateType, Boolean emitDebugSymbols, Boolean forceDynamic, MethodInfo& method) 
    at Microsoft.Linq.Expressions.Compiler.LambdaCompiler.CompileLambda[T](LambdaExpression lambda, Boolean emitDebugSymbols) 
    at Microsoft.Linq.Expressions.LambdaExpression.Compile[T](Boolean emitDebugSymbols) 
    at Microsoft.Scripting.Runtime.OptimizedScriptCode.InvokeTarget(LambdaExpression code, Scope scope) 
    at Microsoft.Scripting.SourceUnit.Execute(Scope scope, ErrorSink errorSink) 
    at Microsoft.Scripting.Hosting.ScriptSource.Execute(ScriptScope scope) 
    at UAP.UI.Form1.button1_Click(Object sender, EventArgs e) 
    at System.Windows.Forms.Control.OnClick(EventArgs e) 
    at System.Windows.Forms.Button.OnClick(EventArgs e) 
    at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) 
    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) 
    at System.Windows.Forms.Control.WndProc(Message& m) 
    at System.Windows.Forms.ButtonBase.WndProc(Message& m) 
    at System.Windows.Forms.Button.WndProc(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 

Antwort

0

Wenn Sie rechts Ihr Projekt klicken und gehen Sie zu Properties Theres eine Publish Registerkarte, die Sie Voraussetzung installiert für Ihre Anwendung angeben können.

Vermutlich können Sie hier einen Pfad zur ausführbaren IronPython-Installationsdatei angeben.

+0

Aber ich sollte es nicht richtig installieren müssen? Drücken Sie einfach die 3 benötigten Baugruppen nach rechts? IronPython.dll, Microsoft.Scripting.dll, Microsoft.Scripting.Code.dll - Aber wie kann ich feststellen, ob diese 3 Assemblies 3.0 oder 3.5 richtig ausgeführt werden müssen? – BuddyJoe

+0

Sie benötigen auch Microsoft.Scripting.ExtensionAttribute.dll, und Sie möchten wahrscheinlich IronPython.Modules.dll. Sie müssen absolut nicht installieren und Sie benötigen nicht .NET 30 oder 3.5, aber Sie benötigen SP1 von .NET 2.0. (Wenn Sie 3.5 installiert haben, haben Sie automatisch 2.0 SP1.) –

4

IronPython erfordert .NET 2.0SP1 oder höher zum Ausführen. Diese Ausnahme tritt aufgrund einer Überladung auf, die in SP1 hinzugefügt wurde.