我如何 运行 使用 Roslyn 使用 nuget 包的脚本?
How can I run a script which uses nuget package using Roslyn?
我想使用 Roslyn 来 运行 动态编码。
问题
当我想 运行 通过 Roslyn 使用 NuGet 包的代码时,它失败了,因为命名空间中不存在类型或命名空间名称。
如何添加引用?
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.Loader;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Scripting;
using Microsoft.CodeAnalysis.Emit;
using Microsoft.CodeAnalysis.Scripting;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
var option = ScriptOptions.Default.WithImports("System");
try
{
var script = CSharpScript.Create(@"
using Microsoft.CodeAnalysis.Scripting;
", option);
script.RunAsync();
}
finally
{
}
}
}
}
与您对 System 所做的相同,您也可以对其他程序集执行此操作,用它替换第 19 行,它应该可以工作:
var option = ScriptOptions.Default.WithReferences(typeof(Microsoft.CodeAnalysis.Scripting.Script).Assembly);
我想使用 Roslyn 来 运行 动态编码。
问题
当我想 运行 通过 Roslyn 使用 NuGet 包的代码时,它失败了,因为命名空间中不存在类型或命名空间名称。
如何添加引用?
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.Loader;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Scripting;
using Microsoft.CodeAnalysis.Emit;
using Microsoft.CodeAnalysis.Scripting;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
var option = ScriptOptions.Default.WithImports("System");
try
{
var script = CSharpScript.Create(@"
using Microsoft.CodeAnalysis.Scripting;
", option);
script.RunAsync();
}
finally
{
}
}
}
}
与您对 System 所做的相同,您也可以对其他程序集执行此操作,用它替换第 19 行,它应该可以工作:
var option = ScriptOptions.Default.WithReferences(typeof(Microsoft.CodeAnalysis.Scripting.Script).Assembly);