我有一个控制台应用程序,我正在尝试部署到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");
错误。我已经尝试了我能想到的一切,但无法弄清楚为什么应用程序找不到程序集。
注意:
access denied
包。答案 0 :(得分:0)
我找到了一个有效的解决方案。在我的目标计算机上,我将Newtonsoft.Json.dll
复制到\windows\system32
目录(在我的计算机上为C:\windows\system32
),并且应用程序找到了它。
我不确定为什么在GAC中加载程序集不起作用。