2015-09-09 73 views
6

mono hatalar Ben pythonnet runtime dll komut dosyaları yüklemek deneyin ve dinamik Roslyn desteklenmiyor çünkü roslyn arka ucu ile çalışmaz fakat mono arka uç aşağıdaki hata ile bobinleri:Roslyn tarafından desteklenmiyor ve sadece mono ile kullanılabilir, ancak mono

$ scriptcs -modules mono 
scriptcs (ctrl-c to exit or :help for help) 

> #r "F:\Python\Python27\Lib\site-packages\Python.Runtime.dll" 
error CS0009: Metadata file `F:\Python\Python27\Lib\site-packages\Python.Runtime.dll' does not contain valid metadata 

Soru:


nasıl Python.Runtime.DLL ile çalışan scriptcs mono arka uç alabilirim? Bundan önce herhangi bir DLL yüklemem gerekir mi? Python.Runtime.DLL Mono desteği ile derlenmiş mi yoksa .NET iyi mi?

+0

https://github.com/scriptcs/scriptcs/issues/1092 – denfromufa

cevap

4

Bu hata (mono derleyici ile CS0009) oldukça geneldir ve verilen bir derlemeyle "yanlış bir şey" anlamına gelir ve hata ayıklaması oldukça zordur. Devam etmenin bir yolu gerçekten de mono olarak derlenmektedir. Kaynak kodunu (https://github.com/pythonnet) indirirseniz, bunun nasıl yapılacağına dair talimatları bulacaksınız (pythonnet \ src \ monoclr \ README.txt dosyasına da bakın). Ancak, hedeflerinize bağlı olarak, resmi olarak mono tarafından desteklenen ve kutudan çıktığında IronPython kullanmayı düşünebilirsiniz. Örnek Aşağıdaki IronPython zip indirilen ve yere çıkarılan varsayar:

scriptcs -modules mono 
scriptcs (ctrl-c to exit or :help for help) 
> #r "G:\dev_tools\IronPython-2.7.5\IronPython-2.7.5\IronPython.dll" 
> #r "G:\dev_tools\IronPython-2.7.5\IronPython-2.7.5\Microsoft.Dynamic.dll" 
> #r "G:\dev_tools\IronPython-2.7.5\IronPython-2.7.5\Microsoft.Scripting.dll" 
> using System; 
> using System.IO; 
> using IronPython.Hosting; 
> using Microsoft.Scripting; 
> using Microsoft.Scripting; 
> using Microsoft.Scripting.Hosting; 
> string script = "print 'hello world'"; 
> var engine = Python.CreateEngine(); 
> var scope = engine.CreateScope(); 
> var source = engine.CreateScriptSourceFromString(script, SourceCodeKind.Statements); 
> var compiled = source.Compile(); 
> var result = compiled.Execute(scope); 
hello world 
> 
+0

noktası etkileşimli C# gömülü CPython sayısal kod test ediyor. Ironpython bir seçenek değil. – denfromufa

+0

.NET altında sınamanız gerekiyor, çünkü bu üretim ortamıdır, Mono değil. – denfromufa

+0

.NET, üretim ortamınızdır ancak örneğinizde mono altından yüklediğiniz komut dosyalarında. Yani, mono altında çalışıyorsunuz ve Pythonnet, mono altında yeniden derleme olmadan orada çalışmayacak. – Evk