File: Vbi.vb
Web Access
Project: src\src\Interactive\vbi\vbi.vbproj (vbi)
' Licensed to the .NET Foundation under one or more agreements.
' The .NET Foundation licenses this file to you under the MIT license.
' See the LICENSE file in the project root for more information.
 
Imports System.IO
Imports System.Reflection
Imports Microsoft.CodeAnalysis.Scripting.Hosting
 
Namespace Microsoft.CodeAnalysis.VisualBasic.Scripting.Hosting
 
    Friend NotInheritable Class Vbi
        Friend Const InteractiveResponseFileName As String = "vbi.rsp"
 
        Public Shared Function Main(args As String()) As Integer
            Try
                ' Note that AppContext.BaseDirectory isn't necessarily the directory containing vbi.exe.
                ' For example, when executed via corerun it's the directory containing corerun.
                Dim vbiDirectory = Path.GetDirectoryName(GetType(Vbi).GetTypeInfo().Assembly.ManifestModule.FullyQualifiedName)
 
                Dim buildPaths = New BuildPaths(
                    clientDir:=vbiDirectory,
                    workingDir:=Directory.GetCurrentDirectory(),
                    sdkDir:=RuntimeMetadataReferenceResolver.GetDesktopFrameworkDirectory(),
                    tempDir:=Path.GetTempPath())
 
                Dim compiler = New VisualBasicInteractiveCompiler(
                    responseFile:=Path.Combine(vbiDirectory, InteractiveResponseFileName),
                    buildPaths:=buildPaths,
                    args:=args,
                    analyzerLoader:=New NotImplementedAnalyzerLoader())
 
                Dim runner = New CommandLineRunner(
                    ConsoleIO.Default,
                    compiler,
                    VisualBasicScriptCompiler.Instance,
                    VisualBasicObjectFormatter.Instance)
 
                Return runner.RunInteractive()
            Catch ex As Exception
                Console.WriteLine(ex.ToString())
                Return 1
            End Try
        End Function
    End Class
 
End Namespace