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



我有一个我试图部署到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:MyAppdebugNewtonsoft.Json.dll");

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

注意:

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

我找到了有效的解决方案。在我的目标计算机上,我将Newtonsoft.Json.dll复制到windowssystem32目录(在我的计算机上是C:windowssystem32(,并通过应用程序找到。

我不确定为什么在GAC中加载组件在此解决方案上不起作用。

最新更新