2012-06-25 2 views
7

copio-incollate da MSDN questo codice:SHA1 (e l'intero spazio dei nomi Cryptography) manca in Visual Studio 2012

using System.Security.Cryptography; 

byte[] buffer = enc.GetBytes(text); 
SHA1CryptoServiceProvider cryptoTransformSHA1 = 
      new SHA1CryptoServiceProvider(); 
string hash = BitConverter.ToString(
      cryptoTransformSHA1.ComputeHash(buffer)).Replace("-", ""); 

return hash; 

ma VS dice che non v'è tale Cryptography namespace, quindi non v'è alcuna SHA1CryptoServiceProvider di classe.

Cosa sto sbagliando?

Sto utilizzando Visual Studio Professional 2012 RC con licenza Dreamspark su Windows 8 Release Preview.

+0

puoi fornire il link di quel codice? – aliboy38

+0

è lì. Vedi MSDn http://msdn.microsoft.com/en-us/library/system.security.cryptography(v=vs.110).aspx –

+0

potrebbe non aver spiegato me stesso, volevo dire VS dice che non riesce a trovare quella classe né namespace –

risposta

5

Suppongo che si sta cercando di creare un'applicazione Metro? Le applicazioni in stile Metro non supportano lo spazio dei nomi System.Security.Cryptography. L'elenco completo degli spazi dei nomi API .NET supportati per le applicazioni Metro può essere trovato here.

Aggiornamento giugno 29

Come Guillermo ha sottolineato però, c'è il namespace Windows.Security.Cryptograhy.Core, che contiene una classe HashAlgorithmProvider dove esempio l'algoritmo SHA1 può essere applicato.

+2

Com'è possibile? Significa che se voglio un'app Metro non posso più usare SHA-1? – sharptooth

5

La risposta è, come ha fatto notare Anders Gustafsson, che in Metro System.Security.Cryptography non è supportato. MA hai invece Windows.Security.Cryptography.

+0

Sì, l'ho visto ma non ho guardato abbastanza da vicino la prima volta. Grazie per segnalarlo. Ho aggiornato la mia risposta con alcuni collegamenti alla documentazione MSDN per completezza. –