2015-11-20 7 views
5

काम नहीं कर रहा है मैं कुछ दिनों के लिए समाधान खोज रहा हूं। उत्तर में से कोई भी जवाब मेरे मामले में काम नहीं करता है जो 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 
} 
+0

तो, समस्या क्या है? क्या आप 'एड-टाइप' कॉल करने से पहले निर्भरता/संदर्भ * लोड नहीं कर सकते हैं? –

+0

हां, मैं उन्हें पहले (एड-टाइप) लोड करता हूं और ऐसा लगता है कि यह एक अलग दायरे में लोड किया जाता है ताकि मुख्य डीएलएल असेंबली को सही तरीके से हल न करे। मेरे पास LINQPad में एक ही कोड है और यह काम करता है। – algorytmus

+0

क्या आपने 'Assembly.LoadFrom' का उपयोग करने का प्रयास किया है? – SOReader

उत्तर

संबंधित मुद्दे