GitHub Repository: https://github.com/dday9/System.Environment.Net

Environment variables are key/value pairs that are usually stored in a .env file. A sample file may look like:
Code:
PORT=8800
CONNECTION_STRING=my super cool connection string
These variables are designed to be used during debugging and not in actual production. The class below provides a way to convert environment variables into a strongly typed .NET object.

Code:
Code:
Namespace System
    
    Public Class Environment

        ''' <summary>
        ''' Parses a file with zero or more environment variables
        ''' </summary>
        ''' <param name="path">The location of the .env file</param>
        ''' <returns><see cref="Dictionary(Of TKey, TValue)"/></returns>
        ''' <remarks>The method uses <see cref="IO.File.ReadAllLines"/> to read the file, therefore the file extension does necessarily need to be .env.</remarks>
        Public Shared Function Load(path As String) As Dictionary(Of String, String)
            If (String.IsNullOrWhiteSpace(path)) Then
                Throw New ArgumentNullException("path")
            End If
            If (Not IO.File.Exists(path)) Then
                Throw New ArgumentException("The file does not exist.")
            End If

            Dim lines = IO.File.ReadAllLines(path)
            
            Return Parse(lines)
        End Function

        ''' <summary>
        ''' Parses zero or more environment variables
        ''' </summary>
        ''' <param name="variables">A collection of KeyValuePairs in the format: Key=Value</param>
        ''' <returns><see cref="Dictionary(Of TKey, TValue)"/></returns>
        Public Shared Function Parse(variables As IEnumerable(Of String)) As Dictionary(Of String, String)
            Dim parsedVariables = New Dictionary(Of String, String)

            For Each variable In variables
                Dim parsedVariable = Parse(variable)
                If (parsedVariables.ContainsKey(parsedVariable.Key)) Then
                    Throw New Exception($"Multiple variables with the key: {parsedVariable.Key}")
                End If

                parsedVariables.Add(parsedVariable.Key, parsedVariable.Value)
            Next

            Return parsedVariables
        End Function

        ''' <summary>
        ''' Parses an individual environment variable
        ''' </summary>
        ''' <param name="variable">KeyValuePair in the format: Key=Value</param>
        ''' <returns><see cref="KeyValuePair(Of TKey, TValue)"/></returns>
        Public Shared Function Parse(variable As String) As KeyValuePair(Of String, String)
            If (String.IsNullOrWhiteSpace(variable)) Then
                Throw New ArgumentNullException(NameOf(variable))
            End If

            Dim separator = variable.IndexOf("=")
            If (separator < 0 OrElse separator = variable.Length - 1) Then
                Throw New Exception($"The variable is not in a valid format: {variable}")
            End If

            Dim key = variable.Substring(0, separator)
            Dim value = variable.Substring(separator + 1)
            
            Return New KeyValuePair(Of String, String)(key, value)
        End Function

    End Class

End Namespace
Example:
Code:
Imports System
Imports System.Collections.Generic
Public Module Module1
    Public Sub Main()
        Dim singleVariable = System.Environment.Parse("Key1=Value1")
        Console.WriteLine("Single Variable")
        Console.WriteLine("{0}, {1}", singleVariable.Key, singleVariable.Value)
        Console.WriteLine()

        Dim multipleValues = System.Environment.Parse({"Key2=Value2", "Key3=Value3", "Key4=Value4"})
        Console.WriteLine("Multiple Variables")
        For Each kvp In multipleValues
            Console.WriteLine("{0}, {1}", kvp.Key, kvp.Value)
        Next
        Console.WriteLine()

        IO.File.WriteAllLines("test.env", {"Key5=Value5", "Key6=Value6", "Key7=Value7"})
        Dim byFile = System.Environment.Load("test.env")
        Console.WriteLine("Loaded by File")
        For Each kvp In byFile
            Console.WriteLine("{0}, {1}", kvp.Key, kvp.Value)
        Next
        Console.WriteLine()
    End Sub
End Module
Fiddle: Live Demo