2016-08-24 11 views
5

Postępowałem zgodnie z instrukcjami na .NET Core website, ale dostałem ten błąd. Wygląda na to, że brakuje niektórych wstępnych pytań. Masz pomysł, jak je zainstalować?rdzenie dotnet w macOS: "Inicjator typów dla" Crypto "rzucił wyjątek"

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 

Odpowiedz

8

Instrukcje instalacji dla systemu MacOS są nieaktualne. Zobacz tę dyskusję na Github: SSL Fails to Link Using Brew.

Wpadłem na to sam podczas instalacji .NET Core na macOS El Capitan. Rozwiązanie z this answer, działa następujące:

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 

Po uruchomieniu tego polecenia w moim terminalu dotnet new działało.

+2

Podobnie jak pracował Urok - dziękuję Nate. –

6

Coś się stało z moim wywaru zainstalować i musiałem uruchomić następujące polecenia, aby utworzyć dowiązania symboliczne do OpenSSL (od strony .Net podstawowej na Microsoft):

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

ta odpowiedź rozwiązała mój problem napotykając na wyjątek Crypto w kodzie Visual Studio. –

2

trzeba określić, gdzie wymagany jest plik położony mapować ścieżkę

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

Powyższe rozwiązanie zadziała, jeśli masz taką samą strukturę folderów dla zainstalowanego rdzenia sieciowego.

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

uprzejmie sprawdzić lokalizację pliku System. Security.Cryptography.Native.dylib w systemie, jednak struktura folderów lub pakietów może uzyskać zmiany zgodnie z aktualizacjami. W moim przypadku ścieżka była

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

+0

Czy mógłbyś dodać wyjaśnienie, co konkretnie robi plik install_name_tool w tym przykładzie? Dzięki! – jdscolam

Powiązane problemy