C# 当我试图运行脚本时,Roslyn崩溃了
我有这个课程:C# 当我试图运行脚本时,Roslyn崩溃了,c#,roslyn,C#,Roslyn,我有这个课程: using Microsoft.CodeAnalysis.CSharp.Scripting; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace RoslynExperiment { internal class Program {
using Microsoft.CodeAnalysis.CSharp.Scripting;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RoslynExperiment
{
internal class Program
{
private static void Main(string[] args)
{
var result = ComputeAsync("1+2");
Console.WriteLine(result.Result);
}
private static async Task<int> ComputeAsync(string formula)
{
return await CSharpScript.EvaluateAsync<int>(formula);
}
}
}
当我尝试执行脚本时,为什么会出现此异常?如何修复它?这是Visual Studio和.Net中记录的问题。尝试将目标框架更改为 或者,您可以尝试将以下内容添加到.csproj中:
<ItemGroup>
<PackageReference Include="Legacy2CPSWorkaround" Version="1.0.0">
<PrivateAssets>All</PrivateAssets>
</PackageReference>
</ItemGroup>
全部的
我建议您展示一下如何运行它。我如何运行它?我在Visual Studio中按F5。。。你的建议中我遗漏了什么吗?我被“脚本”这个词弄糊涂了,这让我相信它可能不是一个常规的应用程序。我以为你是从命令行运行的。除了“它存在”之外,我对C#脚本不是特别熟悉,所以这是一个很好的猜测:)嗯。。。真正令人困惑的是,我在调用ComputeAsync时出错,而不是在我实际尝试运行脚本的函数中……出于某种原因,我在项目中有一个无法删除的对System.Runtime的幻影引用;它显示为带有连接形状的蓝色图标,而不是常规的黑色图标。如果我双击这个引用,它会说它还没有构建……我认为将非库程序更改为.NET标准是行不通的。另一点可能是:)我尝试将ItemGroup添加到我的项目文件中,但没有帮助。如何将框架更改为.NET标准?该选项在“项目属性”的下拉列表中不可用。。。另外,我希望能够在.NETFramework上运行脚本!我意识到我可以用脚本代码创建一个.NET标准类库,并从我的主项目中引用它:)@ekolis Awesome!在我们都无法解决的情况下,很好地解决了这个问题。@jamesfdearborn您通过建议.NET标准为我指明了正确的方向!:)
<ItemGroup>
<PackageReference Include="Legacy2CPSWorkaround" Version="1.0.0">
<PrivateAssets>All</PrivateAssets>
</PackageReference>
</ItemGroup>