【问题标题】:Using Roslyn scripting in UWP在 UWP 中使用 Roslyn 脚本
【发布时间】:2018-03-10 17:24:12
【问题描述】:

我有以下代码段。

var script = CSharpScript.Create("int x = 12;");
var result = await script.RunAsync();
var variable = result.GetVariable("x");
int value = (int)variable.Value;

它在第二行崩溃,并显示以下内容:

无法加载文件或程序集'System.Core,版本=4.0.0.0, 文化=中性,PublicKeyToken=b77a5c561934e089'。位于 程序集的清单定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)

这是一个 UWP 应用程序,我正在尝试使用 Microsoft.CodeAnalysis.CSharp.Scripting 库。我通过 NuGet 安装了这个包。应用程序编译和部署,但在此代码的第二行崩溃。

显然,问题出在System.Core DLL 中,它在我的应用程序部署的版本 (4.6) 和库使用的版本 (4.0) 之间存在冲突版本。有人对此有解决方案吗?有没有办法指定要使用的库版本或目标框架(即使我使用的是 UWP)?

【问题讨论】:

    标签: c# .net uwp nuget roslyn


    【解决方案1】:

    通过我这边的测试,我得到了以下异常:

    System.NotSupportedException:AppX 不支持 Assembly.Load(byte[], ...)

    和你的不一样。我用Microsoft.CodeAnalysis.CSharp.Scripting 2.3.2

    实际上,脚本 API 不能在通用 Windows 应用程序和 .NET Native 中使用,因为应用程序模型不支持加载运行时生成的代码。详情请参考this article 的“支持的平台”部分。因此,目前您应该无法使用 UWP 的脚本 API。

    【讨论】:

      猜你喜欢
      • 2017-06-16
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      • 2016-07-06
      • 1970-01-01
      • 2016-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多