2013-05-08 34 views
8

Il modello VSPackage predefinito nell'SDK di Visual Studio 2012 genera un progetto che utilizza una denominazione forte.Le estensioni di Visual Studio (VSIX) devono avere un nome sicuro?

Perché forte di denominazione è transitiva, questo significa che tutti i riferimenti aggiungo (ad esempio un altro progetto nella stessa soluzione, o una dipendenza di terze parti) anche bisogno di essere forte di nome.

Dal momento che non mi sento a mio agio nel dare un nome forte alle dipendenze di terze parti, preferirei rimuovere la forte denominazione dal mio VSIX.

Quali sono gli svantaggi di ciò?

+0

Quando rimuovo i nomi forti dal mio VSIX, l'estensione non viene distribuita (visualizzata) in Visual Studio. Sto utilizzando Visual Studio 2015. –

risposta

4

Se è già distribuibile VSIX e non è necessario alcunché nel GAC, quindi no, Visual Studio non richiede che il proprio nome sia firmato. Credo che le procedure guidate dei template richiedano una solida firma dei nomi, ma solo perché devono essere installate nel GAC.

Posso pensare ad alcuni motivi che potresti desiderare comunque: se il tuo pacchetto espone un'API pubblica che altre estensioni consumano, potresti fare riferimento a una DLL comune come le altre persone che consumano la tua API pubblica. Si potrebbe voler con nome sicuro firmare il binario interfaccia pubblica, e a seconda di come i vostri progetti sono impostati, potrebbe essere necessario nome forte firmare tutto.

Inoltre, se non si ha un segno di nome forte, si rischia una collisione di nome con un'altra estensione. Se è stato creato una DLL chiamata "Package.dll" e un altro interno anche fatto, e nessuno di voi nome sicuro firmato i binari, è possibile che il CLR otterrà un po 'confuso qui. Pertanto, se non si è sicuri della firma dei nomi, assicurarsi che il nome dell'assembly sia "sufficientemente unico" per evitare questo rischio.

Per quel che vale, quando testiamo i servizi linguistici Roslyn internamente, abbiamo semplicemente facciamo con l'installazione di un VSIX che contiene tutti i bit Roslyn. Un rapido scavo attraverso la storia di controllo di origine implica che abbiamo fatto non con nome firmare i nostri binari dei pacchetti per il primo anno e mezzo, fino a quando alla fine abbiamo dovuto come parte del processo di codice di spedizione da Microsoft.

+1

> Credo che le procedure guidate dei modelli richiedano una firma sicura dei nomi, ma solo perché devono essere installate nel GAC. Questo è sbagliato. Devono avere un nome forte, ma non è necessario essere nel GAC. – kzu