How to enable implicit line continuation in VBCodeProvider?

懵懂的女人 提交于 2020-01-05 19:48:27

问题


The following VB.NET code works when compiled from the Visual Studio:

Sub Main()
    Dim source As Dictionary(Of String, Integer) = New Dictionary(Of String, Integer)

    Dim result = From i In source
                 Where String.IsNullOrEmpty(i.Key)
                 Select i.Value

End Sub

However, when trying to compile it by using CodeDom it appears not use implicit line continuation (I can make it to work by putting underscores but that's exactly what I want to avoid).

The code used:

        static void Main(string[] args)
        {
            string vbSource = @"
Imports System
Imports System.Collections.Generic
Imports System.Linq

Module Module1

    Sub Main()
        Dim source As Dictionary(Of String, Integer) = New Dictionary(Of String, Integer)

        Dim result = From i In source
                     Where String.IsNullOrEmpty(i.Key)
                     Select i.Value

    End Sub

End Module
";
            var providerOptions = new Dictionary<string, string>();
            providerOptions.Add("CompilerVersion", "v3.5"); // .NET v3.5

            CodeDomProvider codeProvider = new Microsoft.VisualBasic.VBCodeProvider(providerOptions);

            CompilerParameters parameters = new CompilerParameters();
            parameters.GenerateInMemory = true;
            parameters.ReferencedAssemblies.Add("System.Core.dll");

            CompilerResults results = codeProvider.CompileAssemblyFromSource(parameters, vbSource);
        }

回答1:


The problem is that you are telling it to use the 3.5 version of the compiler. Implicit line-continuation was not added as a feature until version 4.0 of the .NET Framework, so you'll need to use the version 4.0 (or later) compiler if you want the implicit line-continuation to work. Try changing this:

providerOptions.Add("CompilerVersion", "v3.5"); // .NET v3.5

To this:

providerOptions.Add("CompilerVersion", "v4.0"); // .NET v4.0


来源:https://stackoverflow.com/questions/16358055/how-to-enable-implicit-line-continuation-in-vbcodeprovider

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!