2017-05-05 39 views
0

我有下面的腳本使用CSharpCodeProvider並添加必要的系統庫。我進入了一個需要爲編譯的程序包含Newtonsoft.Json.dll的情況。不幸的是,即使該DLL位於bin文件夾中,我得到CompilerParameters add Newtonsoft

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

我認爲Newtonsoft沒有在GAC中註冊。

編譯器說它找不到程序集,所以你試過給它的Newtonsoft DLL的完整路徑?

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

感謝您的回答,這聽起來像它可以成功。雖然我無法測試和驗證,因爲這是作爲Web API部署到Azure中的。 – Kyle

+0

如何傳遞相對路徑呢? – JuanR