2017-05-05 5 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

ニュートンソフトはGACに登録されていないと思います。

コンパイラはアセンブリを見つけることができないと言っているので、Newtonsoft DLLの完全なパスを試してみましたか?

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

回答ありがとうございます。これはうまくいくようです。 AzureにWeb APIとしてデプロイされているので、これをテストして検証することはできません。 – Kyle

+0

その代わりに相対パスを渡すのはどうですか? – JuanR

関連する問題