找不到元数据文件 '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
错误。我已经尝试了所有我能想到的方法,但无法弄清楚为什么应用程序找不到程序集。
备注:
- 我通过将整个调试文件夹复制到目标服务器来部署此应用程序。可执行文件和程序集位于同一目录中。
- 目标服务器未安装 Visual Studio 或其任何工具。
- 我在我的 DEV 机器上的控制台应用程序项目中安装了 JSON.Net
nuget
包。
我找到了一个有效的解决方案。在我的目标机器上,我将 Newtonsoft.Json.dll
复制到 \windows\system32
目录(在我的机器上它是 C:\windows\system32
),它被应用程序找到了。
我不确定为什么在 GAC 中加载程序集在这个解决方案上不起作用。
我有一个控制台应用程序,我正在尝试将其部署到 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
错误。我已经尝试了所有我能想到的方法,但无法弄清楚为什么应用程序找不到程序集。
备注:
- 我通过将整个调试文件夹复制到目标服务器来部署此应用程序。可执行文件和程序集位于同一目录中。
- 目标服务器未安装 Visual Studio 或其任何工具。
- 我在我的 DEV 机器上的控制台应用程序项目中安装了 JSON.Net
nuget
包。
我找到了一个有效的解决方案。在我的目标机器上,我将 Newtonsoft.Json.dll
复制到 \windows\system32
目录(在我的机器上它是 C:\windows\system32
),它被应用程序找到了。
我不确定为什么在 GAC 中加载程序集在这个解决方案上不起作用。