Public/Install-Assembly.ps1
function Install-Assembly { param ([string]$Name, [string]$Version) $packageName = $Name $packageVersion = $Version $assembly = "$packageName.dll" $projectFolder = "assemblies/$packageName.$packageVersion" $assemblyPath = "$PSScriptRoot/$projectFolder/bin/Release/*/publish/$assembly" $existingAssemblyPath = Convert-Path -ErrorAction Ignore $assemblyPath if ($existingAssemblyPath) { Write-Verbose -vb "Package '$packageName' already installed. Loading main assembly: $existingAssemblyPath" Add-Type -ErrorAction Stop -LiteralPath $existingAssemblyPath } else { Write-Verbose -vb "Installing package '$packageName'..." $null = Get-Command -ErrorAction Stop -CommandType Application dotnet Push-Location (New-Item -ErrorAction Stop -Type Directory "$PSScriptRoot/$projectFolder") $null = dotnet new classlib $null = dotnet add package $packageName @('-v', $packageVersion) $null = dotnet publish -c Release Pop-Location Write-Verbose -vb "Loading main assembly: $assemblyPath" Add-Type -ErrorAction Stop -Path $assemblyPath } } |