I was looking for a solution for a couple of days. None of the answers work in my case, which should reference (load?) .NET assemblies in the application domain from a PowerShell session.
First I load the links (which the above DLL should reference to work [Reflection.Assembly]::LoadFile() or [Reflection.Assembly]::LoadFrom() ), then I load my .NET DLL by calling Add-Type .
Unfortunately, this does not work, so I cannot create multiple instances from this DLL. I get the same errors when I use DLLs without links attached in a normal C # project, but as soon as I link to other assemblies and recompile it works without errors (I can confirm this due to reference assemblies when I checked this in LinqPad as a).
PowerShell:
[System.Reflection.Assembly]::LoadFile((Get-Item -Path ".\System.Data.SQLite.dll" ).FullName) Add-Type -Path (Get-Item -Path ".\Connector.dll" ).FullName -ReferencedAssemblies (Get-Item -Path ".\System.Data.SQLite.dll" ).FullName -PassThru | Out-Null $certMGT = New-Object Connector
the third line of this PowerShell script throws:
New-Object : Exception calling ".ctor" with "0" argument(s): "Failed to find or load the registered .Net Framework Data Provider." At C:\Repos\Connector\bin\Installer.ps1:306 char:20 + $certMGT = New-Object Connector + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [New-Object], MethodInvocationException + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand PSMessageDetails : Exception : System.Management.Automation.MethodInvocationException: Exception calling ".ctor" with "0" argument(s): "Failed to find or load the registered .Net Framework Data Provider." ---> System.Configuration.ConfigurationErrorsException: Failed to find or load the registered .Net Framework Data Provider. at System.Data.Common.DbProviderFactories.GetFactory(DataRow providerRow) at System.Data.EntityClient.EntityConnection.GetFactory(String providerString) at System.Data.EntityClient.EntityConnection.ChangeConnectionString(String newConnectionString) at System.Data.Objects.ObjectContext..ctor(String connectionString, String defaultContainerName) at Connector.Entity.ConnectorDBEntities..ctor(String connectionString) at Connector.DBManager..ctor() at Connector.DAL.ConfigurationDAL..ctor() at Connector.ConnectorConfig..ctor() at Connector.ConnectorCertMGT..ctor() --- End of inner exception stack trace --- at System.Management.Automation.DotNetAdapter.AuxiliaryConstructorInvoke(MethodInformation methodInformation, Object[] arguments, Object[] originalArgumen ts) at System.Management.Automation.DotNetAdapter.ConstructorInvokeDotNet(Type type, ConstructorInfo[] constructors, Object[] arguments) at Microsoft.PowerShell.Commands.NewObjectCommand.CallConstructor(Type type, ConstructorInfo[] constructors, Object[] args) TargetObject : CategoryInfo : InvalidOperation: (:) [New-Object], MethodInvocationException FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand ErrorDetails : InvocationInfo : System.Management.Automation.InvocationInfo
LinqPad request (C # program, Connector.dll links) - this works great
void Main() { Assembly.LoadFile(@"C:\Repos\Connector\bin\System.Data.SQLite.dll"); Connector connector = new Connector();//this also throws exactly the same error if I do not LoadFile as in above line }