我可以使用useLegacyV2RuntimeActivationPolicy运行脚本吗?

时间:2015-06-21 11:59:24

标签: .net-4.0 scriptcs

我有一个DLL(Microsoft.SqlServer.BatchParser),我需要在scriptcs文件中引用它。

只有在app.config文件中包含 useLegacyV2RuntimeActivationPolicy 时,才能引用以下DLL。

例如,此控制台应用程序:

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            var batchParser = new ManagedBatchParser.Parser();
        }
    }
}

只有在app.config中包含 useLegacyV2RuntimeActivationPolicy 时才会编译,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">    
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup>
</configuration>

但是在CSX文件中做同样的事情:

#r "Microsoft.Sqlserver.BatchParser"

var batchParser = new ManagedBatchParser.Parser();  

将失败,因为我不知道如何指定此属性。一旦我尝试运行scriptcs文件,我就会收到臭名昭着的错误:

  

其他信息:混合模式程序集是针对版本构建的   运行时'v2.0.50727'并且无法在4.0运行时加载   没有其他配置信息。

所以我的主要问题是,如何告诉脚本开始使用useLegacyV2RuntimeActivationPolicy属性编译CSX文件?

1 个答案:

答案 0 :(得分:2)

您的app.config文件将重命名为 program .exe.config。为了使用ScriptCS执行此操作,您只需要一个名为scriptcs.exe.config的文件,其中包含 useLegacyV2RuntimeActivationPolicy 启动节点。