2017-05-05 2 views
0

J'ai le script ci-dessous qui utilise CSharpCodeProvider et ajoute les bibliothèques système nécessaires. Je suis venu dans une situation où j'ai besoin d'inclure le Newtonsoft.Json.dll pour le programme compilé. Malheureusement, même si le dll est dans le dossier bin, je reçoisCompilerParameters add Newtonsoft

Error (CS0006) Newtonsoft.Json.dll could not be found

Toutes les idées seraient utiles pour moi et d'autres qui peuvent avoir le même problème.

string code = Encoding.UTF8.GetString(Convert.FromBase64String(Code.code)); 
CSharpCodeProvider provider = new CSharpCodeProvider(); 
CompilerParameters parameters = new CompilerParameters(); 
parameters.GenerateInMemory = true; 
parameters.GenerateExecutable = false; 
parameters.ReferencedAssemblies.Add("System.Net.Http.dll"); 
parameters.ReferencedAssemblies.Add("Newtonsoft.Json.dll"); 
CompilerResults results = provider.CompileAssemblyFromSource(parameters, code); 
if (results.Errors.HasErrors) 
{ 
    StringBuilder sb = new StringBuilder(); 
    foreach (CompilerError error in results.Errors) 
    { 
     sb.AppendLine(String.Format("Error ({0}): {1}", error.ErrorNumber, error.ErrorText)); 
    } 
    string badResult = sb.ToString(); 
    return badResult; 
} 

Répondre

0

Je pense que Newtonsoft n'est pas enregistré dans le GAC.

Le compilateur dit qu'il ne trouve pas l'assembly, alors avez-vous essayé de lui donner le chemin d'accès complet à la DLL Newtonsoft?

parameters.ReferencedAssemblies.Add(@"c:\somepath\Newtonsoft.Json.dll"); 
+0

Merci pour la réponse, cela sonne comme il pourrait être avec succès. Bien que je ne puisse pas tester et vérifier cela car il est déployé dans Azure en tant qu'API Web. – Kyle

+0

Que diriez-vous de passer un chemin relatif à la place alors? – JuanR