gpt4 book ai didi

c# - 如何在 VBCodeProvider 中启用隐式续行?

转载 作者:太空宇宙 更新时间:2023-11-03 21:47:09 25 4
gpt4 key购买 nike

以下 VB.NET 代码在从 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

但是,当尝试使用 CodeDom 编译它时,它似乎没有使用隐式续行(我可以通过放置下划线使其工作,但这正是我想要避免的)。

使用的代码:

        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);
}

最佳答案

问题是你告诉它使用 3.5 版本的编译器。直到 .NET Framework 4.0 版才添加隐式续行作为一项功能,因此如果您希望隐式续行起作用,则需要使用 4.0 版(或更高版本)的编译器。尝试改变这个:

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

对此:

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

关于c# - 如何在 VBCodeProvider 中启用隐式续行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16358055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com