【问题标题】:CompilerParameters add NewtonsoftCompilerParameters 添加 Newtonsoft
【发布时间】:2017-05-05 17:17:32
【问题描述】:

我有以下脚本,它使用 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;
}

【问题讨论】:

    标签: c# json.net csharpcodeprovider


    【解决方案1】:

    我认为 Newtonsoft 没有在 GAC 中注册。

    编译器说它找不到程序集,那么您是否尝试过为其提供 Newtonsoft DLL 的完整路径?

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

    【讨论】:

    • 感谢您的回答,这听起来可能会成功。虽然,我无法测试和验证这一点,因为它已作为 Web API 部署到 Azure 中。
    • 那么传递一个相对路径怎么样?
    猜你喜欢
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    相关资源
    最近更新 更多