Ho appena installato SSMS 18 GA su un computer con solo VS2019 installato, e quando provo ad aprire SSMS verrà visualizzata la schermata iniziale, ma poi il processo verrà chiuso.
L'esecuzione di sms con il parametro -log
Rivela un messaggio di errore:
CreateInstance non riuscito per il pacchetto [Pacchetto Utilità di pianificazione] Origine: 'mscorlib' Descrizione: Impossibile caricare il file o l'assemblaggio 'Microsoft.VisualStudio.Shell.Interop.8.0, Versione = 15.0.0.0, Cultura = neutro, PublicKeyToken = b03f5f7f11d50a3a' o uno di le sue dipendenze. La definizione manifest dell'Assemblea individuata non corrisponde al riferimento dell'Assemblea. (Eccezione da HRESULT: 0x80131040) System.IO.FileLoadException: Impossibile caricare il file o l'Assemblea 'Microsoft.VisualStudio.Shell.Interop.8.0, Versione = 15.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' o una delle sue dipendenze. La definizione manifest dell'Assemblea individuata non corrisponde al riferimento dell'Assemblea. (Eccezione da HRESULT: 0x80131040) Nome file: 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' ---> System.IO.FileLoadException: Impossibile caricare il file o Assembly "Microsoft.VisualStudio.Shell.Interop.8.0, Version = 8.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a" o una delle sue dipendenze. La definizione manifest dell'Assemblea individuata non corrisponde al riferimento dell'Assemblea. (Eccezione da HRESULT: 0x80131040) Nome file: 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 8.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a'
WRN: la registrazione dell'associazione dell'assieme è disattivata. Per abilitare la registrazione degli errori del bind Assembly, impostare il valore del registro [HKLM\Software\Microsoft\Fusion! EnableLog] (DWORD) su 1. Nota: è presente una penalità delle prestazioni associata alla registrazione degli errori del bind Assembly. Per disattivare questa funzione, rimuovere il valore di registro [HKLM\Software\Microsoft\Fusion! EnableLog].
at System.Reflection.RuntimeAssembly.GetType (RuntimeAssembly Assembly, String name, Boolean throwOnError, Boolean ignoreCase, ObjectHandleOnStack type) su System.Reflection.RuntimeAssembly.GetType (String name, Boolean throwOnError.CreareCreareCode) assemblyString, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object [] args, CultureInfo culture, Object [] activAttributes, Evidence securityInfo, StackCrawlMark & stackMark) su System.Activator.CreateInstance (String assemblyName, String typeName) su System.AppD .CreateInstance (String assemblyName, String typeName)
System.IO.FileLoadException: impossibile caricare il file o l'assembly 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 8.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' o una delle sue dipendenze. La definizione manifest dell'Assemblea individuata non corrisponde al riferimento dell'Assemblea. (Eccezione da HRESULT: 0x80131040) Nome file: 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 8.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a'
WRN: la registrazione dell'associazione dell'assieme è disattivata. Per abilitare la registrazione degli errori del bind Assembly, impostare il valore del registro [HKLM\Software\Microsoft\Fusion! EnableLog] (DWORD) su 1. Nota: è presente una penalità delle prestazioni associata alla registrazione degli errori del bind Assembly. Per disattivare questa funzione, rimuovere il valore di registro [HKLM\Software\Microsoft\Fusion! EnableLog].
Ho provato a eseguire "Repair" su SSMS e ho provato a riparare C:\ProgramData\Package Cache\{AAA9F15B-AF45-4562-9991-93A848D3A902}v15.0.28307.421\redist\vs2017_isoshell_for_ssms.msi
, Ma il problema persiste.
Ho appena sovrapposto Microsoft.VisualStudio.Shell.Interop.8.0.dll in C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PublicAssemblies
con la copia da ..\PrivateAssemblies\Interop
e il IDE. (Grazie a Mitch per aver scoperto il reato DLL.)
Sembra una domanda e risposta popolare oggi, quindi sono felice di sapere che non ero solo io.
Come Ronan Ariely lo consiglia , è stata pubblicata una soluzione ufficiale che consiglia di rimuovere una riga da ssms.exe.config
.
In C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Ssms.exe.config
:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!-- ...snip... -->
<runtime>
<!-- ...snip... -->
<!-- Remove this line (~line 38) -->
<NgenBind_OptimizeNonGac enabled="1" />
<!-- ...snip... -->
</runtime>
<!-- ...snip... -->
</configuration>
Se hai eseguito il mio soluzione precedente di aggiungere l'Assemblea al GAC, probabilmente dovresti disinstallarlo eseguendo:
gacutil /u Microsoft.VisualStudio.Shell.Interop.8.0,Version=15.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a
Questo è un problema noto e c'è una nuova soluzione ufficiale pubblicata dal team di sviluppatori SSMS.
È possibile visualizzare il ticket aperto sul sistema di feedback Microsoft nel seguente collegamento: https://feedback.Azure.com/forums/908035-sql-server/suggestions/37502512-ssms2018-installed-but-will-not run
La prima soluzione alternativa presentata è stata la copia del file: Microsoft.VisualStudio.Shell.Interop.8.0.dll
dalla directory: C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PrivateAssemblies\Interop
nella directory: C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PublicAssemblies
Successivamente, è stata pubblicata una soluzione più mirata (che è quello che ho usato): è sufficiente rimuovere il file C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Platform\Microsoft.VisualStudio.MinShell.Interop.pkgdef
Ad ogni modo, diversi giorni fa il team pubblica un aggiornamento come puoi vedere nel link sopra. Questa è una citazione dalla risposta ufficiale aggiornata:
La soluzione alternativa raccomandata, nel frattempo, è:
1) Chiudere tutte le istanze di SSMS
2) Modifica ssms.exe.config
3) Rimuovere la riga con il seguente testo (dovrebbe essere la riga 38): NgenBind_OptimizeNonGac enabled = “1”
Questa è la stessa modifica che sarà nella prossima versione di SSMS 18.x
Nota! il percorso del file ssms.exe.config è nella cartella: C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE
Ho appena superato lo stesso problema su un Server 2016 appena costruito con SQL Server 2017 e SSMS 18.0, tuttavia è andato via dopo 2 riavvii durante i quali il server è stato completamente patchato con patch O/S di marzo 2019. Proverò a fare qualche altro test per capire se sono state davvero le patch O/S ad aiutare questo, ma nel frattempo non sono a conoscenza di nessun'altra installazione su quel server.
Sembra più casuale dopo il riavvio, ma quello che ho notato ora è che SSMS funziona subito dopo l'installazione, ma poi SCCM nella mia organizzazione inizia a installare varie cose e SSMS smette di funzionare. Ora il sospetto è " Funzionalità server .NET Framework 3.5 2016 "
Ho affrontato lo stesso problema e dopo aver cercato per un po 'questo problema, ho trovato il seguente articolo passo-passo che affronta questo problema:
La soluzione fornita è:
Copiare il file PrivateAssemblies\Interop\Microsoft.VisualStudio.Shell.Interop.8.0.dll (quello con la versione Assembly 15.0.0.0) nella cartella PublicAssemblies.
I passaggi sono stati i seguenti:
PublicAssemblies\Microsoft.VisualStudio.Shell.Interop.8.0.dll
a qualcos'altro, nel caso avessi bisogno di quel file in seguito.Microsoft.VisualStudio.Shell.Interop.8.0.dll
file da PrivateAssemblies\Interop
nella cartella PublicAssemblies
.Dopo questa modifica, SSMS è stato caricato senza alcun problema.
C'è un'altra soluzione a questo problema. Nella voce Feedback di Azure SQL Server Management Studio 18 GA (15.0.18118.0) non compatibile con .NET Framework 4.8 Erich Signer suggerisce:
Passo 1:
C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Platform\Microsoft.VisualStudio.MinShell.Interop.pkgdef
Rinomina e assicurati che questo file non abbia
.pkgdef
extension più. Oppure rimuovi il file.Passo 2:
Rimuovere la seguente chiave di registro (che viene creata all'avvio di SSMS 18 usando il file ".pkgdef" menzionato sopra):
HKEY_CURRENT_USER\SOFTWARE\Microsoft\SQL Server Management Studio\18.0_IsoShell_Config\RuntimeConfiguration\dependentAssembly\bindingRedirection\{8BC7AF31-B6DA-4B97-8B36-F0500DECB147}
Basato su un commento originariamente lasciato da omzig