2012-07-10 38 views
6

Tôi đang làm ví dụ có thể được tìm thấy here. Vì vậy, tôi đang cố gắng để chạy IronPython trong một C# kịch bản:Biên dịch động C# và lỗi "Microsoft.CSharp.dll"

Python:

def hello(name): 
    print "Hello " + name + "! Welcome to IronPython!" 
    return 

def add(x, y): 
    print "%i + %i = %i" % (x, y, (x + y)) 
    return 

def multiply(x, y): 
    print "%i * %i = %i" % (x, y, (x * y)) 
    return 

C#:

using IronPython.Hosting; 
using IronPython.Runtime; 
using Microsoft.Scripting.Hosting; 
using System; 

namespace IntroIronPython 
{ 
    class IronPythonMain 
    { 
     static void Main(string[] args) 
     { 
      // Create a new ScriptRuntime for IronPython 
      Console.WriteLine("Loading IronPython Runtime..."); 
      ScriptRuntime python = Python.CreateRuntime(); 

      try 
      { 
       // Attempt to load the python file 
       Console.WriteLine("Loading Python File..."); 
       // Create a Dynamic Type for our Python File 
       dynamic pyfile = python.UseFile("PythonFunctions.py"); 
       Console.WriteLine("Python File Loaded!"); 

       Console.WriteLine("Running Python Commands...\n"); 

       // Call the hello(name) function 
       pyfile.hello("Urda"); 
       … 

Và từ đây tôi có lỗi này: "Dynamic Operation không thể là biên soạn không có tham chiếu assembly "Microsoft.CSharp.dll". " Và tôi thực sự không hiểu điều đó là gì, tôi đã quên thêm gì?

Trong tài liệu tham khảo của tôi, tôi có: References of my project

Thx giúp đỡ của bạn.

Ps: Tôi đang sử dụng MonoDevelop.

Trả lời

4

Ok. Về cơ bản, sai lầm của tôi liên quan đến thực tế là tôi đã thêm các hội đồng IronPython của tôi từ nền tảng sai. Xác minh rằng:

  • Target Framework: 4,0

  • Thêm tất cả các hội đồng được cung cấp bởi IronPython trong [IronPython-2.7.3] -> [Platforms] -> [Net40].

Thx cho tất cả những người đã cho tôi lời khuyên.

Ps: Bây giờ, tất nhiên, có một vấn đề khác ... Nhưng nó không phải về chủ đề đó nữa.

+1

Đảm bảo bạn gắn cờ câu trả lời của riêng mình làm giải pháp để khách truy cập trong tương lai có thể thấy bạn đã giải quyết được vấn đề! Ngoài ra tôi rất vui vì bạn đã tìm thấy và chọn sử dụng ví dụ của tôi :) – Urda

+0

Đây cũng là vấn đề của tôi. Tôi đã thêm tài liệu tham khảo của tôi bằng cách sử dụng tab ".NET" trong Visual Studio C# 2010 Express. Tôi nghĩ rằng các tập tin gốc xuất hiện có thể chỉ từ thư mục 'Net35'. Hãy nhận biết về 'Đường dẫn' trong hộp thoại Thêm Tham khảo. Khi tôi thêm chúng từ 'IronPython 2.7 \ Platforms \ Net40', bản dựng đã thành công, và cả hai bộ hội đồng bây giờ xuất hiện trên tab .Net trong Add References. (Điều này có thể là trường hợp trước đó, tôi chỉ không nhận thấy). – cod3monk3y

2

Microsoft.CSharp.dll chứa phần động của trình biên dịch C#. Bất cứ khi nào bạn sử dụng dynamic trong mã của mình, bạn cần tham chiếu đến mã đó. Tôi không quen với MonoDevelop, nhưng có thể bạn sẽ phải đặt khung mục tiêu thành 4.0 và thêm tham chiếu đến Microsoft.CSharp.dll vào dự án (có thể nhấp chuột phải vào dự án, 'Thêm tham chiếu', tìm Microsoft.CSharp) .

Dự đoán của tôi là dự án bạn đang sử dụng đã được tạo bằng phiên bản tiền phát hành của VS và thiếu các tham chiếu thích hợp.

+0

Xin chào, đây chính xác là những gì tôi có: Framework 4.0 và như bạn thấy trong hình ảnh Microsoft.CSharp đã có trong tài liệu tham khảo của tôi; đó là lý do tại sao tôi không hiểu lỗi này. Microsoft.CSharp được thêm vào trong tài liệu tham khảo và nó vẫn nói rằng tôi không thể biên dịch mà không có nó ... Bạn có nghĩ rằng các hội đồng khác cũng nên được thêm vào để làm cho nó hoạt động? – ssx

+0

Ồ, tôi đã bỏ lỡ điều đó trong hình ảnh. Tôi không chắc chuyện gì đang xảy ra. Nó có thể là một vấn đề MonoDevelop. –

+0

Bạn có thể tìm thấy giải pháp của tôi dưới đây. Tôi nghĩ rằng tôi đã thêm các hội đồng sai từ nền tảng. Không có vấn đề như vậy với IronPython 2.7.0 vì vậy tôi chuyển sang. – ssx

11

Đây là những gì đã giúp tôi. Tôi đang sử dụng Xamarian Studio v5.8.1 (build 8) để viết một chương trình C#. Tôi chỉ cần nhấp chuột phải "Tham khảo" -> "Chỉnh sửa Tài liệu tham khảo" -> bắt đầu nhập "Microsoft" vào thanh tìm kiếm -> Chọn hộp bên cạnh "Microsoft.CSharp" -> và nhấp "OK".

Tôi vừa lưu và chạy chương trình sau đó - mọi thứ hoạt động như mong đợi!

Các vấn đề liên quan