2016-08-24 2 views
5

Ich folgte den Anweisungen auf der .NET Core website, aber habe diesen Fehler. Anscheinend gibt es einige Vorbedingungen, die fehlen. Irgendeine Idee, wie man diese installiert?dotnet core in macOS: "Der Typinitialisierer für 'Crypto' hat eine Ausnahme ausgelöst"

mymac:~ naveen.vijay$ dotnet new 

Unhandled Exception: System.TypeInitializationException: The type initializer for 'Crypto' threw an exception. ---> System.TypeInitializationException: The type initializer for 'CryptoInitializer' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'System.Security.Cryptography.Native': The specified module could not be found. 
(Exception from HRESULT: 0x8007007E) 
    at Interop.CryptoInitializer.EnsureOpenSslInitialized() 
    at Interop.CryptoInitializer..cctor() 
    --- End of inner exception stack trace --- 
    at Interop.Crypto..cctor() 
    --- End of inner exception stack trace --- 
    at Interop.Crypto.GetRandomBytes(Byte* buf, Int32 num) 
    at System.IO.Path.GetCryptoRandomBytes(Byte* bytes, Int32 byteCount) 
    at System.IO.Path.GetRandomFileName() 
    at Microsoft.DotNet.InternalAbstractions.TemporaryDirectory..ctor() 
    at Microsoft.Extensions.EnvironmentAbstractions.DirectoryWrapper.CreateTemporaryDirectory() 
    at Microsoft.DotNet.Configurer.NuGetPackagesArchiver..ctor() 
    at Microsoft.DotNet.Cli.Program.ConfigureDotNetForFirstTimeUse(INuGetCacheSentinel nugetCacheSentinel) 
    at Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, ITelemetry telemetryClient) 
    at Microsoft.DotNet.Cli.Program.Main(String[] args) 
Abort trap: 6 

Antwort

8

Die Installationsanweisungen für macOS sind nicht mehr aktuell. Siehe diese Diskussion auf Github: SSL Fails to Link Using Brew.

Ich selbst lief dies bei der Installation von .NET Core auf Mac OS El Capitan. Die Lösung von this answer, läuft die folgende:

sudo install_name_tool -add_rpath /usr/local/opt/openssl/lib /usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.Security.Cryptography.Native.dylib 

Nach diesem Befehl in meinem Terminal läuft, dotnet new hat gut funktioniert.

+2

arbeitete Genau wie ein Charme - danke Nate. –

6

Etwas passiert mit meinem Gebräu installieren und ich hatte die folgenden Befehle ausführen erstellen symbolische Links auf OpenSSL (von der .Net-Core-Seite auf Microsoft): Datei

ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/ 
ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/ 
+0

Diese Antwort löste mein Problem mit der Crypto-Ausnahme in Visual Studio Code. –

2

müssen angeben, wo die erforderliche befindet sich der Pfad

sudo install_name_tool -add_rpath/usr/local/opt/openssl/lib /usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.Security zur Karte .Cryptography.Native.dylib

Die obige Lösung funktioniert, wenn Sie die gleiche Ordnerstruktur für den installierten dotnet-Core haben.

/usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.Security.Cryptography.Native.dylib

freundlicherweise die Lage der Systemdatei überprüfen. Security.Cryptography.Native.dylib in Ihrem System, jedoch können die Ordnerstruktur oder die Pakete gemäß den Aktualisierungen geändert werden. In meinem Fall war der Weg

/usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.2/System.Security.Cryptography.Native.dylib

+0

Würden Sie bitte eine Erklärung hinzufügen, was das install_name_tool in diesem Beispiel konkret macht? Vielen Dank! – jdscolam

Verwandte Themen