2017-09-28 4 views
0

J'ai le segment de code suivant.Utilisation de scripts Roslyn dans UWP

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

Il se bloque sur la deuxième ligne avec ce qui suit:

Impossible de charger le fichier ou l'assembly 'System.Core, Version = 4.0.0.0, Culture = neutral , PublicKeyToken = b77a5c561934e089. La définition de manifeste de l'assembly située ne correspond pas à la référence d'assembly. (Exception de HRESULT: 0x80131040)

Ceci est une application UWP et je tente d'utiliser la bibliothèque Microsoft.CodeAnalysis.CSharp.Scripting. J'ai installé le paquet via NuGet. L'application compile et déploie, mais se bloque sur la deuxième ligne de ce code.

Évidemment, le problème est dans la DLL System.Core qui a une version en conflit entre celle déployée avec mon application (4.6) et celle utilisée par la bibliothèque (4.0). Est-ce que quelqu'un a une solution à cela? Existe-t-il un moyen de spécifier une version de la bibliothèque à utiliser ou le framework cible (même si j'utilise UWP)?

Répondre

1

En testant de mon côté, je me suis l'exception suivante:

System.NotSupportedException: Assembly.Load (byte [], ...) ne sont pas pris en charge dans AppX

Non Pareil avec le tien. En fait, les API de script ne peuvent pas être utilisées dans Universal Windows Applications et .NET Native car le modèle d'application ne prend pas en charge le code de chargement généré lors de l'exécution. Détails s'il vous plaît référence la section "Plates-formes prises en charge" de this article. Ainsi, vous ne devriez pas être en mesure d'utiliser l'API de script pour UWP.