का उपयोग करके संदर्भ कैसे जोड़ूं मैं सी # स्क्रिप्ट निष्पादित करने के लिए Roslyn का उपयोग करते समय संदर्भ जोड़ने के बारे में थोड़ा उलझन में हूं।मैं नवीनतम Roslyn API (सी # स्क्रिप्ट निष्पादन)
मैं एपीजी के नवीनतम संस्करण (1.2.20906.2) का उपयोग कर रहा हूं, जो NuGet के माध्यम से स्थापित है।
मैंने Google पर कई पोस्ट की खोज की है, लेकिन एपीआई में महत्वपूर्ण बदलाव आया है क्योंकि मैंने पाया है कि कई उदाहरण हैं। शामिल संशोधन जवाब में सुझाव दिया, प्लस DLL करने के लिए पथ द्वारा संदर्भित -
using System;
using Roslyn.Scripting.CSharp;
namespace Test.ConsoleApp
{
public class Program
{
static void Main(string[] args)
{
new ScriptRunner().RunScripts();
}
}
public class ScriptRunner
{
public void RunScripts()
{
var engine = new ScriptEngine();
var session = engine.CreateSession();
session.AddReference("System");
session.AddReference("System.Linq");
// The following script runs successfully
session.Execute(@"using System;
var arr = new[] {1, 2, 6};
foreach (var i in arr)
{
if(i > 1)
{
Console.WriteLine(i);
}
}"
);
// The following script using Linq fails
session.Execute(@"using System;
using System.Linq;
var arr = new[] {1, 2, 6};
var arrResult = arr.Where(x => x > 1);
foreach (var i in arrResult)
{
Console.WriteLine(i);
}"
);
Console.ReadLine();
}
}
}
अद्यतन:
using System;
using Roslyn.Scripting.CSharp;
namespace Test.ConsoleApp
{
public class Program
{
static void Main(string[] args)
{
new ScriptRunner().RunScripts();
}
}
public class ScriptRunner
{
public void RunScripts()
{
var engine = new ScriptEngine();
var session = engine.CreateSession();
session.AddReference("System");
session.AddReference("System.Core"); // This reference is required to use Linq language features
session.AddReference("System.Linq");
session.Execute(@"using System;
using System.Linq;
var arr = new[] {1, 2, 6};
var arrResult = arr.Where(x => x > 1);
foreach (var i in arrResult)
{
Console.WriteLine(i);
}"
);
// Example use of adding reference to external project by path to dll
session.AddReference(@"E:\SVN\CSharpRoslynTesting\CSharpRoslynTesting\Test.ExternalLibraryTest\bin\Debug\Test.ExternalLibraryTest.dll");
session.Execute(@"using System;
using Test.ExternalLibraryTest;
var externalTestClass = new ExternalTestClass();
externalTestClass.TestOutput();
"
);
Console.ReadLine();
}
}
}
उत्कृष्ट, यही आवश्यक था। सिस्टम प्रकट होता है। .NET Framework v 3.5 को लक्षित करते समय कोर को स्वचालित रूप से संदर्भित किया जाता है। स्रोत: http://blogs.msdn.com/b/pedram/archive/2007/11/07/system-core-dll-of-net-framework-3-5.aspx?Redirected=true – gb2d
खुशी मैंने मदद की:) मैं एक ही मुद्दे से निपट रहा था। उम्मीद है कि एमएस रिलीज के करीब आता है, हमें अधिक अद्यतित दस्तावेज़ और नमूने मिलते हैं! –
मैं जो एपीआई के इस नवीनतम संस्करण में देख रहा हूं, मैं पुराने दस्तावेज की तुलना में उपयोग करने के लिए बहुत आसान दिखता हूं। मैं सोच रहा हूं कि स्क्रिप्ट को स्वचालित रूप से आवश्यक संदर्भों के लिए पार्स किया गया है या नहीं। मुझे लगता है कि यह कुछ प्रकार के रेगेक्स पार्सर में निर्माण करने के लिए बहुत अधिक खिंचाव नहीं है, हालांकि रोज़लिन यहां क्या कर रहा है इसके खिलाफ यह प्रकार चलता है! – gb2d