private static WrapperEngineLoadException WrapAssemblyLoaderException( Exception originalAssemblyLoaderException) { string originalMessage = originalAssemblyLoaderException.Message; string description; string message; Architecture osArchitecture = RuntimeInformation.OSArchitecture; if ((osArchitecture == Architecture.X64 || osArchitecture == Architecture.X86) && originalMessage.StartsWith("Couldn't load native assembly at ")) { description = Strings.Engine_VcRedist2012And2015InstallationRequired; message = JsErrorHelpers.GenerateEngineLoadErrorMessage(description, EngineName); } else { description = originalMessage; message = JsErrorHelpers.GenerateEngineLoadErrorMessage(description, EngineName, true); } var wrapperEngineLoadException = new WrapperEngineLoadException(message, EngineName, EngineVersion, originalAssemblyLoaderException) { Description = description }; return(wrapperEngineLoadException); }
private static WrapperEngineLoadException WrapTypeLoadException( TypeLoadException originalTypeLoadException) { string originalMessage = originalTypeLoadException.Message; string description; string message; Match errorMessageMatch = _interfaceAssemblyLoadErrorMessage.Match(originalMessage); if (errorMessageMatch.Success) { string assemblyFileName = errorMessageMatch.Groups["assemblyFileName"].Value; var stringBuilderPool = StringBuilderPool.Shared; StringBuilder descriptionBuilder = stringBuilderPool.Rent(); descriptionBuilder.AppendFormat(CoreStrings.Engine_AssemblyNotFound, assemblyFileName); descriptionBuilder.Append(" "); if (assemblyFileName == DllName.V8LibCpp64Bit || assemblyFileName == DllName.V8LibCpp32Bit) { descriptionBuilder.AppendFormat(CoreStrings.Engine_NuGetPackageInstallationRequired, assemblyFileName == DllName.V8LibCpp64Bit ? "JavaScriptEngineSwitcher.V8.Native.win-x64" : "JavaScriptEngineSwitcher.V8.Native.win-x86" ); descriptionBuilder.Append(" "); descriptionBuilder.Append(Strings.Engine_VcRedist2017InstallationRequired); } else { descriptionBuilder.AppendFormat(CoreStrings.Common_SeeOriginalErrorMessage, originalMessage); } description = descriptionBuilder.ToString(); stringBuilderPool.Return(descriptionBuilder); message = JsErrorHelpers.GenerateEngineLoadErrorMessage(description, EngineName); } else { description = originalMessage; message = JsErrorHelpers.GenerateEngineLoadErrorMessage(description, EngineName, true); } var wrapperEngineLoadException = new WrapperEngineLoadException(message, EngineName, EngineVersion, originalTypeLoadException) { Description = description }; return(wrapperEngineLoadException); }
private static WrapperEngineLoadException WrapTypeLoadException( TypeLoadException originalTypeLoadException) { string originalMessage = originalTypeLoadException.Message; string description; string message; Match errorMessageMatch = _libraryLoadErrorMessage.Match(originalMessage); if (errorMessageMatch.Success) { string assemblyFileName = errorMessageMatch.Groups["assemblyFileName"].Value; var stringBuilderPool = StringBuilderPool.Shared; StringBuilder descriptionBuilder = stringBuilderPool.Rent(); descriptionBuilder.AppendFormat(CoreStrings.Engine_AssemblyNotFound, assemblyFileName); descriptionBuilder.Append(" "); string packageName; if (_nativeAssemblyPackageMap.TryGetValue(assemblyFileName, out packageName)) { descriptionBuilder.AppendFormat(CoreStrings.Engine_NuGetPackageInstallationRequired, packageName); } else { descriptionBuilder.AppendFormat(CoreStrings.Common_SeeOriginalErrorMessage, originalMessage); } description = descriptionBuilder.ToString(); stringBuilderPool.Return(descriptionBuilder); message = JsErrorHelpers.GenerateEngineLoadErrorMessage(description, EngineName); } else { description = originalMessage; message = JsErrorHelpers.GenerateEngineLoadErrorMessage(description, EngineName, true); } var wrapperEngineLoadException = new WrapperEngineLoadException(message, EngineName, EngineVersion, originalTypeLoadException) { Description = description }; return(wrapperEngineLoadException); }
private static WrapperEngineLoadException WrapDllNotFoundException( DllNotFoundException originalDllNotFoundException) { string originalMessage = originalDllNotFoundException.Message; string description; string message; bool isMonoRuntime = Utils.IsMonoRuntime(); if ((isMonoRuntime && originalMessage == DllName.Universal) || originalMessage.ContainsQuotedValue(DllName.Universal)) { const string buildInstructionsUrl = "https://github.com/pauldotknopf/vroomjs-core#maclinux"; bool quoteDescription = false; var stringBuilderPool = StringBuilderPool.Shared; StringBuilder descriptionBuilder = stringBuilderPool.Rent(); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { Architecture osArchitecture = RuntimeInformation.OSArchitecture; if (osArchitecture == Architecture.X64 || osArchitecture == Architecture.X86) { descriptionBuilder.Append(originalMessage); quoteDescription = true; } else { descriptionBuilder.AppendFormat(CoreStrings.Engine_ProcessorArchitectureNotSupported, osArchitecture.ToString().ToLowerInvariant()); } } else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) || RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) { descriptionBuilder.AppendFormat(CoreStrings.Engine_AssemblyNotFound, DllName.ForUnix); descriptionBuilder.Append(" "); descriptionBuilder.AppendFormat(Strings.Engine_BuildNativeAssemblies, DllName.ForUnix, "libv8.so." + EngineVersion, buildInstructionsUrl); } else { descriptionBuilder.Append(CoreStrings.Engine_OperatingSystemNotSupported); } description = descriptionBuilder.ToString(); stringBuilderPool.Return(descriptionBuilder); message = JsErrorHelpers.GenerateEngineLoadErrorMessage(description, EngineName, quoteDescription); } else { description = originalMessage; message = JsErrorHelpers.GenerateEngineLoadErrorMessage(description, EngineName, true); } var wrapperEngineLoadException = new WrapperEngineLoadException(message, EngineName, EngineVersion, originalDllNotFoundException) { Description = description }; return(wrapperEngineLoadException); }