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

时间:2018-02-21 23:12:37

标签: c# compiler-errors json.net .net-assembly

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

<%= button B if current_user.type =~ /^(regular|experienced|admin)$/ %>

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

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 出现在我的应用程序的debug文件夹中,其中包含应用程序使用的所有其他程序集。它似乎无法找到它。我甚至尝试将Newtonsoft.Json.dll安装到目标服务器上的GAC中并获得相同的结果。当我尝试硬编码程序集的路径时

Newtonsoft.Json.dll

我收到options.ReferencedAssemblies.Add("@"C:\MyApp\debug\Newtonsoft.Json.dll"); 错误。我已经尝试了我能想到的一切,但无法弄清楚为什么应用程序找不到程序集。

注意:

  • 我通过将整个调试文件夹复制到目标服务器来部署此应用程序。可执行文件和程序集位于同一目录中。
  • 目标服务器上没有安装Visual Studio或其中的任何工具。
  • 我在DEV计算机上的控制台应用程序项目中安装了JSON.Net access denied包。

1 个答案:

答案 0 :(得分:0)

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

我不确定为什么在GAC中加载程序集不起作用。