2017-09-28 51 views
0

我有以下代码段。在UWP中使用Roslyn脚本

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, 文化=中性公钥= b77a5c561934e089'。定位的 程序集清单定义与程序集引用不匹配。 (异常来自HRESULT:0x80131040)

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

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

回答

1

通过测试在我身边,我有以下异常:

System.NotSupportedException:Assembly.Load(字节[],...)在AppX中

不是不支持与你的一样。我用Microsoft.CodeAnalysis.CSharp.Scripting 2.3.2

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

相关问题