काम नहीं कर रहा है मैं कुछ दिनों के लिए समाधान खोज रहा हूं। उत्तर में से कोई भी जवाब मेरे मामले में काम नहीं करता है जो PowerShell सत्र से ऐप डोमेन में .NET को संदर्भित करता है (लोड?) असेंबली।लोड हो रहा है .NET असेंबली निर्भरता
मैं पहली बार संदर्भ लोड तो मैं Add-Type
फोन करके मेरी नेट DLL लोड (काम करने [Reflection.Assembly]::LoadFile()
या [Reflection.Assembly]::LoadFrom()
ऊपर उल्लिखित DLL द्वारा संदर्भित किया जाना आवश्यक है कि)।
दुर्भाग्य से यह काम नहीं कर रहा है इसलिए मैं उस डीएलएल से कुछ उदाहरण नहीं बना सकता। जब मैं सामान्य सी # प्रोजेक्ट में संलग्न संदर्भों के बिना डीएलएल का उपयोग करता हूं, तो मुझे वही त्रुटियां मिल रही हैं, लेकिन जैसे ही मैं अन्य असेंबली का संदर्भ देता हूं और पुन: संकलित करता हूं, यह त्रुटियों के बिना काम करता है (मैं पुष्टि कर सकता हूं कि संदर्भित असेंबली के कारण यह है कि मैंने लिंककैड में जांच की है कुंआ)।
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
कि PowerShell स्क्रिप्ट की तीसरी पंक्ति फेंकता है:
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 क्वेरी (सी # कार्यक्रम; संदर्भ Connector.dll) - यह ठीक काम करता है
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
}
तो, समस्या क्या है? क्या आप 'एड-टाइप' कॉल करने से पहले निर्भरता/संदर्भ * लोड नहीं कर सकते हैं? –
हां, मैं उन्हें पहले (एड-टाइप) लोड करता हूं और ऐसा लगता है कि यह एक अलग दायरे में लोड किया जाता है ताकि मुख्य डीएलएल असेंबली को सही तरीके से हल न करे। मेरे पास LINQPad में एक ही कोड है और यह काम करता है। – algorytmus
क्या आपने 'Assembly.LoadFrom' का उपयोग करने का प्रयास किया है? – SOReader