在面向.NET Framework 4.6的应用程序中部署Roslyn

时间:2018-03-28 15:56:45

标签: c# roslyn

我维护一个应用程序,用户可以通过脚本编写某些操作来影响应用程序的输出。然后将用户输入的那些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相关的内容?

0 个答案:

没有答案