找不到元数据文件 'Newtonsoft.Json.dll'

Metadata file 'Newtonsoft.Json.dll' could not be found

我有一个控制台应用程序,我正在尝试将其部署到 Azure VM (Windows Server 2012R2)。控制台应用程序创建 CSharp 编译器实例并处理发送给它的 C# 脚本。

CSharpCodeProvider provider = new CSharpCodeProvider();
CompilerParameters options = new CompilerParameters();
options.ReferencedAssemblies.Add("System.Data.dll");
options.ReferencedAssemblies.Add("System.dll");
options.ReferencedAssemblies.Add("System.Xml.dll");
options.ReferencedAssemblies.Add("System.Xml.Linq.dll");
options.ReferencedAssemblies.Add("System.Linq.dll");
options.ReferencedAssemblies.Add("System.Core.dll");
options.ReferencedAssemblies.Add("Newtonsoft.Json.dll");

控制台应用程序在我的开发机器上按预期工作。但是,当我尝试部署它然后 运行 在目标服务器上时,出现以下错误。

Metadata file 'Newtonsoft.Json.dll' could not be found

现在,程序集 Newtonsoft.Json.dll 与该应用程序使用的所有其他程序集一起出现在我的应用程序的调试文件夹中。它似乎无法找到它。我什至尝试将 Newtonsoft.Json.dll 安装到目标服务器上的 GAC 中,结果相同。当我尝试硬编码程序集的路径时

options.ReferencedAssemblies.Add("@"C:\MyApp\debug\Newtonsoft.Json.dll");

我收到 access denied 错误。我已经尝试了所有我能想到的方法,但无法弄清楚为什么应用程序找不到程序集。

备注:

我找到了一个有效的解决方案。在我的目标机器上,我将 Newtonsoft.Json.dll 复制到 \windows\system32 目录(在我的机器上它是 C:\windows\system32),它被应用程序找到了。

我不确定为什么在 GAC 中加载程序集在这个解决方案上不起作用。