我有以下脚本使用CSharpCodeProvider并添加必要的系统库。我遇到了需要为编译程序包含Newtonsoft.Json.dll的情况。不幸的是,即使dll在bin文件夹中,我也得到了
Error (CS0006) Newtonsoft.Json.dll could not be found
任何想法对我和其他可能遇到同样问题的人都有帮助。
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;
}
答案 0 :(得分:0)
我认为Newtonsoft未在GAC注册。
编译器说它无法找到程序集,所以你试过给它提供Newtonsoft DLL的完整路径吗?
parameters.ReferencedAssemblies.Add(@"c:\somepath\Newtonsoft.Json.dll");