Domanda

Ho una piccola applicazione che utilizza la stessa API degli esempi powerscript per l'aggiornamento di un database da un dacpac (applicazione livello dati).

Per farlo funzionare su un server Windows 2008 senza gli strumenti di SQL Server installati, ho dovuto fare riferimento a molte DLL e scegliere "Copia locale" su quelle DLL per inserirle nella mia cartella di compilazione. Funziona bene.

Ora desidero chiamare la stessa API da un ruolo di lavoro in Azure. Ma quando lo eseguo (con le stesse DLL) ottengo

"System.IO.FileLoadException: impossibile caricare il file o l'assembly "Microsoft.SqlServer.BatchParser.dll" o una delle sue dipendenze. Il l'applicazione non si è avviata perché la sua configurazione side-by-side non è corretto. Consulta il registro degli eventi dell'applicazione "

Funziona bene quando eseguo il deployment nell'emulatore locale.

Non sono ancora riuscito a ottenere nulla di significativo dai log (non sono sicuro di avere la diagnostica corretta).

Il file menzionato si trova nel pacchetto pubblicato. Ho trovato 2 versioni del file ma l'altra versione è a 32 bit e (comprensibilmente) ottengo un'eccezione BadFormat se lo provo.

Ecco le DLL a cui faccio riferimento:

ADODB, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
Microsoft.Build.Utilities.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL
Microsoft.CSharp
Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL
Microsoft.ReportViewer.ProcessingObjectModel, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL
Microsoft.SqlServer.BatchParser
Microsoft.SqlServer.BatchParserClient
Microsoft.SqlServer.ConnectionInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Diagnostics.STrace, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Dmf, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Management.Dac, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Management.DacEnum, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Management.DacSerialization, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Management.Sdk.Sfc, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Management.SmoMetadataProvider, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Management.SqlParser, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.ServiceBrokerEnum, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Smo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.SqlClrProvider, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.SqlEnum, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Microsoft.WindowsAzure.ServiceRuntime
Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
System
System.Configuration
System.Core
System.Data
System.Data.DataSetExtensions
System.Data.Entity.Design
System.Deployment
System.Drawing
System.Windows.Forms
System.Xml
System.Xml.Linq
WindowsBase

Qualche idea che mi manca?

È stato utile?

Soluzione

Penso di aver risolto questo problema.Ho abilitato l'accesso remoto alla VM, il che significava che avevo accesso agli eventi dell'applicazione.Dopo aver eseguito il mio ruolo di lavoro ho ricevuto un errore nel visualizzatore di eventi che diceva che non riusciva a trovare microsoft.vc80.crt.

Non ho trovato una DLL con quel nome ma l'ho trovata

microsoft.vc80.crt.manifest 

in questa cartella:

C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Update Cache\KB2528583\ServicePack\x64

Indica altre 3 DLL che ho incluso anche:

msvcr80.dll
msvcp80.dll
msvcm80.dll

Finora ho eseguito l'aggiornamento solo una volta, ma spero che sia ora.Se trovo / risolvo altri problemi, aggiornerò qui.

Spero che questo aiuti qualcuno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top