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'..." Get-Command -ErrorAction Stop -CommandType Application dotnet | Write-Information Push-Location (New-Item -ErrorAction Stop -Type Directory "$PSScriptRoot/$projectFolder") Invoke-Process -Command dotnet -Arguments @('new', 'classlib') | Write-Information Invoke-Process -Command dotnet -Arguments @('add', 'package','-v', $packageVersion) | Write-Information Invoke-Process -Command dotnet -Arguments @('publish', '-c','Release') | Write-Information Pop-Location Write-Verbose -vb "Loading main assembly: $assemblyPath" Add-Type -ErrorAction Stop -Path $assemblyPath Write-Information "Adding Azure.Identity Type ..." $dlls = (Get-ChildItem -Path "$PSScriptRoot/$projectFolder/bin/Release/*/publish/" -Filter "*.dll").FullName foreach ($dll in $dlls) { Add-Type -Path $dll } #Add-Type -ErrorAction Stop -Path "$PSScriptRoot/Azure.Identity/Azure.Identity.dll" | Write-Information Write-Information "Added Azure.Identity Type." } } |