首页 > 解决方案 > 在动态编译器中引用由 NuGet 导入的程序集

问题描述

我有一些 C# 代码接受用 C# 本身编写的脚本并动态执行脚本。我可以通过引用它们的程序集来使用内置库,如下所示。

CSharpCodeProvider provider = new CSharpCodeProvider();
CompilerParameters cp = new CompilerParameters();
cp.ReferencedAssemblies.Add("System.Data.dll")
cp.ReferencedAssemblies.Add("System.dll");
cp.ReferencedAssemblies.Add("System.Xml.dll");
cp.ReferencedAssemblies.Add("System.Linq.dll");
cp.ReferencedAssemblies.Add("System.Xml.Linq.dll");
cp.ReferencedAssemblies.Add("System.Core.dll");
cp.ReferencedAssemblies.Add("System.Net.Http.dll");
...
options.GenerateExecutable = false;
options.GenerateInMemory = true;
CompilerResults results = provider.CompileAssemblyFromSource(options, "<SCRIPT-SOURCE-HERE>");

但是,当尝试添加不属于 .NET Framework 的其他库时,我遇到了问题。在这里,我已RestSharp通过将库添加到项目中,NuGet并且可以确认 RestSharp.dll 位于bin项目目录中。

options.ReferencedAssemblies.Add("RestSharp.dll");

我将此添加到我试图编译的脚本中......

using RestSharp;

但是,当尝试编译使用该RestSharp库的脚本时,我收到一个错误...

Metadata file 'RestSharp.dll' could not be found

参考RestSharp大会的最佳方式是什么?

标签: c#assembliesrestsharpcsharpcodeprovider

解决方案


推荐阅读