我维护一个应用程序,用户可以通过脚本编写某些操作来影响应用程序的输出。然后将用户输入的那些C#源代码片段编译为在运行时引用和执行的程序集。
为了编译程序集,我正在使用System.CodeDom.Compiler.CSharpCodeProvider。该应用程序面向.NET Framework 4.6。 我无法切换到任何其他框架版本。
现在我想使用Roslyn Compiler API来分析和编程构建程序集。
我添加了NuGet包Microsoft.CodeAnalysis.CSharp(V 2.7.0)并更改了应用程序的代码以使用Roslyn的Compiler API。我的项目编译好了。
但是当应用程序运行并尝试使用Roslyn编译程序集时,我收到的错误是在当时应用程序的BIN目录中找不到 Microsoft.CSharp.dll 。所以我为Microsoft.Csharp添加了NuGet包。
下一个错误是找不到 System.Core.dll 。在添加了这个NuGet包后,它抱怨 System.Drawing.dll 。
在添加另外10个软件包后,我可以让它工作。但必须有另一种方式。由于应用程序使用System.Drawing本身,我担心在运行时会出现意外结果。
是否有使用默认.NET Framework 4.6程序集的Roslyn版本?
是否可以通过XCOPY将一堆Roslyn dll部署到客户的服务器上,而无需在目标计算机上安装任何与Roslyn相关的内容?