public void GetFusionLog_Pass () { BadImageFormatException fle = new BadImageFormatException ("message", "filename"); Assert.AreEqual ("message", fle.Message, "Message"); Assert.AreEqual ("filename", fle.FileName, "FileName"); Assert.IsNull (fle.FusionLog, "FusionLog"); // note: ToString doesn't work in this case }
public void NoRestriction () { BadImageFormatException fle = new BadImageFormatException ("message", "filename", new BadImageFormatException ("inner message", "inner filename")); Assert.AreEqual ("message", fle.Message, "Message"); Assert.AreEqual ("filename", fle.FileName, "FileName"); Assert.IsNull (fle.FusionLog, "FusionLog"); Assert.IsNotNull (fle.ToString (), "ToString"); }
public void FullRestriction () { BadImageFormatException fle = new BadImageFormatException ("message", "filename", new BadImageFormatException ("inner message", "inner filename")); Assert.AreEqual ("message", fle.Message, "Message"); Assert.AreEqual ("filename", fle.FileName, "FileName"); Assert.IsNull (fle.FusionLog, "FusionLog"); // ToString doesn't work in this case and strangely throws a BadImageFormatException Assert.IsNotNull (fle.ToString (), "ToString"); }
public void Constructor1 () { BadImageFormatException bif = new BadImageFormatException (); Assert.IsNotNull (bif.Data, "#1"); Assert.IsNull (bif.FileName, "#2"); Assert.IsNull (bif.InnerException, "#3"); Assert.IsNotNull (bif.Message, "#4"); // Format of the executable (.exe) or library (.dll) is invalid Assert.IsNull (bif.FusionLog, "#5"); Assert.IsTrue (bif.ToString ().StartsWith (bif.GetType().FullName), "#6"); }
public void Constructor2_Message_Null () { BadImageFormatException bif = new BadImageFormatException ((string) null); Assert.IsNotNull (bif.Data, "#1"); Assert.IsNull (bif.FileName, "#2"); Assert.IsNull (bif.InnerException, "#3"); Assert.IsNotNull (bif.Message, "#4"); // Could not load file or assembly '' ... Assert.IsTrue (bif.Message.IndexOf ("''") != -1, "#5"); Assert.IsNull (bif.FusionLog, "#5"); Assert.IsTrue (bif.ToString ().StartsWith (bif.GetType ().FullName), "#6"); Assert.IsTrue (bif.ToString ().IndexOf ("''") != -1, "#7"); }
public void Constructor2_Message_Empty () { BadImageFormatException bif = new BadImageFormatException (string.Empty); Assert.IsNotNull (bif.Data, "#1"); Assert.IsNull (bif.FileName, "#2"); Assert.IsNull (bif.InnerException, "#3"); Assert.IsNotNull (bif.Message, "#4"); Assert.AreEqual (string.Empty, bif.Message, "#5"); Assert.IsNull (bif.FusionLog, "#6"); Assert.AreEqual (bif.GetType ().FullName + ": ", bif.ToString (), "#7"); }
public void Constructor2 () { BadImageFormatException bif = new BadImageFormatException ("message"); #if NET_2_0 Assert.IsNotNull (bif.Data, "#1"); #endif Assert.IsNull (bif.FileName, "#2"); Assert.IsNull (bif.InnerException, "#3"); Assert.IsNotNull (bif.Message, "#4"); Assert.AreEqual ("message", bif.Message, "#5"); Assert.IsNull (bif.FusionLog, "#6"); Assert.AreEqual (bif.GetType ().FullName + ": message", bif.ToString (), "#7"); }
public Assembly LoadFrom(string assemblyPath) { if (File.Exists(assemblyPath)) { try { return Assembly.LoadFrom(assemblyPath); } catch (BadImageFormatException err) { var exception = new BadImageFormatException("This file is in a bad format and will not be loaded.", err); throw exception; } } throw new FileNotFoundException(string.Format("The file could not be found at {0}", assemblyPath)); }
public void Constructor2_Message_Empty () { BadImageFormatException bif = new BadImageFormatException (string.Empty); #if NET_2_0 Assert.IsNotNull (bif.Data, "#1"); #endif Assert.IsNull (bif.FileName, "#2"); Assert.IsNull (bif.InnerException, "#3"); Assert.IsNotNull (bif.Message, "#4"); Assert.AreEqual (string.Empty, bif.Message, "#5"); Assert.IsNull (bif.FusionLog, "#6"); #if TARGET_JVM // ToString always has a stack trace under TARGET_JVM Assert.IsTrue (bif.ToString ().StartsWith (bif.GetType().FullName + ": "), "#7"); #else Assert.AreEqual (bif.GetType ().FullName + ": ", bif.ToString (), "#7"); #endif // TARGET_JVM }
public void Constructor4_Message_Null () { BadImageFormatException bif = null; bif = new BadImageFormatException ((string) null, "file.txt"); Assert.IsNotNull (bif.Data, "#A1"); Assert.IsNotNull (bif.FileName, "#A2"); Assert.AreEqual ("file.txt", bif.FileName, "#A3"); Assert.IsNull (bif.InnerException, "#A4"); Assert.IsNotNull (bif.Message, "#A5"); Assert.IsNull (bif.FusionLog, "#A6"); Assert.IsTrue (bif.ToString ().StartsWith (bif.GetType ().FullName + ": "), "#A7"); Assert.IsTrue (bif.ToString ().IndexOf (Environment.NewLine) != -1, "#A8"); Assert.IsTrue (bif.ToString ().IndexOf ("'file.txt'") != -1, "#A9"); bif = new BadImageFormatException ((string) null, string.Empty); Assert.IsNotNull (bif.Data, "#B1"); Assert.IsNotNull (bif.FileName, "#B2"); Assert.AreEqual (string.Empty, bif.FileName, "#B3"); Assert.IsNull (bif.InnerException, "#B4"); // .NET 1.1: The format of the file 'file.txt' is invalid // .NET 2.0: Could not load file or assembly 'file.txt' or one of its ... Assert.IsNotNull (bif.Message, "#B5"); Assert.IsNull (bif.FusionLog, "#B6"); Assert.IsTrue (bif.ToString ().StartsWith (bif.GetType ().FullName + ": "), "#B7"); Assert.IsFalse (bif.ToString ().IndexOf (Environment.NewLine) != -1, "#B8"); Assert.IsTrue (bif.ToString ().IndexOf ("''") != -1, "#B9"); }
public void Constructor4_FileName_Null () { BadImageFormatException bif = new BadImageFormatException ("message", (string) null); #if NET_2_0 Assert.IsNotNull (bif.Data, "#A1"); #endif Assert.IsNull (bif.FileName, "#A2"); Assert.IsNull (bif.InnerException, "#A3"); Assert.IsNotNull (bif.Message, "#A4"); Assert.AreEqual ("message", bif.Message, "#A5"); Assert.IsNull (bif.FusionLog, "#A6"); #if TARGET_JVM // ToString always has a stack trace under TARGET_JVM Assert.IsTrue (bif.ToString ().StartsWith (bif.GetType().FullName + ": message"), "#A7"); #else Assert.AreEqual (bif.GetType ().FullName + ": message", bif.ToString (), "#A7"); #endif // TARGET_JVM bif = new BadImageFormatException (string.Empty, (string) null); #if NET_2_0 Assert.IsNotNull (bif.Data, "#B1"); #endif Assert.IsNull (bif.FileName, "#B2"); Assert.IsNull (bif.InnerException, "#B3"); Assert.IsNotNull (bif.Message, "#B4"); Assert.AreEqual (string.Empty, bif.Message, "#B5"); Assert.IsNull (bif.FusionLog, "#B6"); #if TARGET_JVM // ToString always has a stack trace under TARGET_JVM Assert.IsTrue (bif.ToString ().StartsWith (bif.GetType().FullName + ": "), "#B7"); #else Assert.AreEqual (bif.GetType ().FullName + ": ", bif.ToString (), "#B7"); #endif // TARGET_JVM }
/// <summary> /// This does a mapping from hr to the exception and also takes care of making default exception in case of classic COM as COMException. /// and in winrt and marshal APIs as Exception. /// </summary> /// <param name="errorCode"></param> /// <param name="message"></param> /// <param name="createCOMException"></param> /// <returns></returns> internal static Exception GetMappingExceptionForHR(int errorCode, string message, bool createCOMException, bool hasErrorInfo) { if (errorCode >= 0) { return null; } Exception exception = null; bool shouldDisplayHR = false; switch (errorCode) { case __HResults.COR_E_NOTFINITENUMBER: // NotFiniteNumberException case __HResults.COR_E_ARITHMETIC: exception = new ArithmeticException(); break; case __HResults.COR_E_ARGUMENT: case unchecked((int)0x800A01C1): case unchecked((int)0x800A01C2): case __HResults.CLR_E_BIND_UNRECOGNIZED_IDENTITY_FORMAT: exception = new ArgumentException(); if (errorCode != __HResults.COR_E_ARGUMENT) shouldDisplayHR = true; break; case __HResults.E_BOUNDS: case __HResults.COR_E_ARGUMENTOUTOFRANGE: case __HResults.ERROR_NO_UNICODE_TRANSLATION: exception = new ArgumentOutOfRangeException(); if (errorCode != __HResults.COR_E_ARGUMENTOUTOFRANGE) shouldDisplayHR = true; break; case __HResults.COR_E_ARRAYTYPEMISMATCH: exception = new ArrayTypeMismatchException(); break; case __HResults.COR_E_BADIMAGEFORMAT: case __HResults.CLDB_E_FILE_OLDVER: case __HResults.CLDB_E_INDEX_NOTFOUND: case __HResults.CLDB_E_FILE_CORRUPT: case __HResults.COR_E_NEWER_RUNTIME: case __HResults.COR_E_ASSEMBLYEXPECTED: case __HResults.ERROR_BAD_EXE_FORMAT: case __HResults.ERROR_EXE_MARKED_INVALID: case __HResults.CORSEC_E_INVALID_IMAGE_FORMAT: case __HResults.ERROR_NOACCESS: case __HResults.ERROR_INVALID_ORDINAL: case __HResults.ERROR_INVALID_DLL: case __HResults.ERROR_FILE_CORRUPT: case __HResults.COR_E_LOADING_REFERENCE_ASSEMBLY: case __HResults.META_E_BAD_SIGNATURE: exception = new BadImageFormatException(); // Always show HR for BadImageFormatException shouldDisplayHR = true; break; case __HResults.COR_E_CUSTOMATTRIBUTEFORMAT: exception = new FormatException(); break; // CustomAttributeFormatException case __HResults.COR_E_DATAMISALIGNED: exception = InteropExtensions.CreateDataMisalignedException(message); // TODO: Do we need to add msg here? break; case __HResults.COR_E_DIVIDEBYZERO: case __HResults.CTL_E_DIVISIONBYZERO: exception = new DivideByZeroException(); if (errorCode != __HResults.COR_E_DIVIDEBYZERO) shouldDisplayHR = true; break; case __HResults.COR_E_DLLNOTFOUND: #if ENABLE_WINRT exception = new DllNotFoundException(); #endif break; case __HResults.COR_E_DUPLICATEWAITOBJECT: exception = new ArgumentException(); break; // DuplicateWaitObjectException case __HResults.COR_E_ENDOFSTREAM: case unchecked((int)0x800A003E): exception = new System.IO.EndOfStreamException(); if (errorCode != __HResults.COR_E_ENDOFSTREAM) shouldDisplayHR = true; break; case __HResults.COR_E_TYPEACCESS: // TypeAccessException case __HResults.COR_E_ENTRYPOINTNOTFOUND: exception = new TypeLoadException(); break; // EntryPointNotFoundException case __HResults.COR_E_EXCEPTION: exception = new Exception(); break; case __HResults.COR_E_DIRECTORYNOTFOUND: case __HResults.STG_E_PATHNOTFOUND: case __HResults.CTL_E_PATHNOTFOUND: exception = new System.IO.DirectoryNotFoundException(); if (errorCode != __HResults.COR_E_DIRECTORYNOTFOUND) shouldDisplayHR = true; break; case __HResults.COR_E_FILELOAD: case __HResults.FUSION_E_INVALID_PRIVATE_ASM_LOCATION: case __HResults.FUSION_E_SIGNATURE_CHECK_FAILED: case __HResults.FUSION_E_LOADFROM_BLOCKED: case __HResults.FUSION_E_CACHEFILE_FAILED: case __HResults.FUSION_E_ASM_MODULE_MISSING: case __HResults.FUSION_E_INVALID_NAME: case __HResults.FUSION_E_PRIVATE_ASM_DISALLOWED: case __HResults.FUSION_E_HOST_GAC_ASM_MISMATCH: case __HResults.COR_E_MODULE_HASH_CHECK_FAILED: case __HResults.FUSION_E_REF_DEF_MISMATCH: case __HResults.SECURITY_E_INCOMPATIBLE_SHARE: case __HResults.SECURITY_E_INCOMPATIBLE_EVIDENCE: case __HResults.SECURITY_E_UNVERIFIABLE: case __HResults.COR_E_FIXUPSINEXE: case __HResults.ERROR_TOO_MANY_OPEN_FILES: case __HResults.ERROR_SHARING_VIOLATION: case __HResults.ERROR_LOCK_VIOLATION: case __HResults.ERROR_OPEN_FAILED: case __HResults.ERROR_DISK_CORRUPT: case __HResults.ERROR_UNRECOGNIZED_VOLUME: case __HResults.ERROR_DLL_INIT_FAILED: case __HResults.FUSION_E_CODE_DOWNLOAD_DISABLED: case __HResults.CORSEC_E_MISSING_STRONGNAME: case __HResults.MSEE_E_ASSEMBLYLOADINPROGRESS: case __HResults.ERROR_FILE_INVALID: exception = new System.IO.FileLoadException(); shouldDisplayHR = true; break; case __HResults.COR_E_PATHTOOLONG: exception = new System.IO.PathTooLongException(); break; case __HResults.COR_E_IO: case __HResults.CTL_E_DEVICEIOERROR: case unchecked((int)0x800A793C): case unchecked((int)0x800A793D): exception = new System.IO.IOException(); if (errorCode != __HResults.COR_E_IO) shouldDisplayHR = true; break; case __HResults.ERROR_FILE_NOT_FOUND: case __HResults.ERROR_MOD_NOT_FOUND: case __HResults.ERROR_INVALID_NAME: case __HResults.CTL_E_FILENOTFOUND: case __HResults.ERROR_BAD_NET_NAME: case __HResults.ERROR_BAD_NETPATH: case __HResults.ERROR_NOT_READY: case __HResults.ERROR_WRONG_TARGET_NAME: case __HResults.INET_E_UNKNOWN_PROTOCOL: case __HResults.INET_E_CONNECTION_TIMEOUT: case __HResults.INET_E_CANNOT_CONNECT: case __HResults.INET_E_RESOURCE_NOT_FOUND: case __HResults.INET_E_OBJECT_NOT_FOUND: case __HResults.INET_E_DOWNLOAD_FAILURE: case __HResults.INET_E_DATA_NOT_AVAILABLE: case __HResults.ERROR_DLL_NOT_FOUND: case __HResults.CLR_E_BIND_ASSEMBLY_VERSION_TOO_LOW: case __HResults.CLR_E_BIND_ASSEMBLY_PUBLIC_KEY_MISMATCH: case __HResults.CLR_E_BIND_ASSEMBLY_NOT_FOUND: exception = new System.IO.FileNotFoundException(); shouldDisplayHR = true; break; case __HResults.COR_E_FORMAT: exception = new FormatException(); break; case __HResults.COR_E_INDEXOUTOFRANGE: case unchecked((int)0x800a0009): exception = new IndexOutOfRangeException(); if (errorCode != __HResults.COR_E_INDEXOUTOFRANGE) shouldDisplayHR = true; break; case __HResults.COR_E_INVALIDCAST: exception = new InvalidCastException(); break; case __HResults.COR_E_INVALIDCOMOBJECT: exception = new InvalidComObjectException(); break; case __HResults.COR_E_INVALIDOLEVARIANTTYPE: exception = new InvalidOleVariantTypeException(); break; case __HResults.COR_E_INVALIDOPERATION: case __HResults.E_ILLEGAL_STATE_CHANGE: case __HResults.E_ILLEGAL_METHOD_CALL: case __HResults.E_ILLEGAL_DELEGATE_ASSIGNMENT: case __HResults.APPMODEL_ERROR_NO_PACKAGE: exception = new InvalidOperationException(); if (errorCode != __HResults.COR_E_INVALIDOPERATION) shouldDisplayHR = true; break; case __HResults.COR_E_MARSHALDIRECTIVE: exception = new MarshalDirectiveException(); break; case __HResults.COR_E_METHODACCESS: // MethodAccessException case __HResults.META_E_CA_FRIENDS_SN_REQUIRED: // MethodAccessException case __HResults.COR_E_FIELDACCESS: case __HResults.COR_E_MEMBERACCESS: exception = new MemberAccessException(); if (errorCode != __HResults.COR_E_METHODACCESS) shouldDisplayHR = true; break; case __HResults.COR_E_MISSINGFIELD: // MissingFieldException case __HResults.COR_E_MISSINGMETHOD: // MissingMethodException case __HResults.COR_E_MISSINGMEMBER: case unchecked((int)0x800A01CD): exception = new MissingMemberException(); break; case __HResults.COR_E_MISSINGMANIFESTRESOURCE: exception = new System.Resources.MissingManifestResourceException(); break; case __HResults.COR_E_NOTSUPPORTED: case unchecked((int)0x800A01B6): case unchecked((int)0x800A01BD): case unchecked((int)0x800A01CA): case unchecked((int)0x800A01CB): exception = new NotSupportedException(); if (errorCode != __HResults.COR_E_NOTSUPPORTED) shouldDisplayHR = true; break; case __HResults.COR_E_NULLREFERENCE: exception = new NullReferenceException(); break; case __HResults.COR_E_OBJECTDISPOSED: case __HResults.RO_E_CLOSED: // No default constructor exception = new ObjectDisposedException(String.Empty); break; case __HResults.COR_E_OPERATIONCANCELED: #if ENABLE_WINRT exception = new OperationCanceledException(); #endif break; case __HResults.COR_E_OVERFLOW: case __HResults.CTL_E_OVERFLOW: exception = new OverflowException(); break; case __HResults.COR_E_PLATFORMNOTSUPPORTED: exception = new PlatformNotSupportedException(message); break; case __HResults.COR_E_RANK: exception = new RankException(); break; case __HResults.COR_E_REFLECTIONTYPELOAD: #if ENABLE_WINRT exception = new System.Reflection.ReflectionTypeLoadException(null, null); #endif break; case __HResults.COR_E_SECURITY: case __HResults.CORSEC_E_INVALID_STRONGNAME: case __HResults.CTL_E_PERMISSIONDENIED: case unchecked((int)0x800A01A3): case __HResults.CORSEC_E_INVALID_PUBLICKEY: case __HResults.CORSEC_E_SIGNATURE_MISMATCH: exception = new System.Security.SecurityException(); break; case __HResults.COR_E_SAFEARRAYRANKMISMATCH: exception = new SafeArrayRankMismatchException(); break; case __HResults.COR_E_SAFEARRAYTYPEMISMATCH: exception = new SafeArrayTypeMismatchException(); break; case __HResults.COR_E_SERIALIZATION: exception = new System.Runtime.Serialization.SerializationException(message); break; case __HResults.COR_E_SYNCHRONIZATIONLOCK: exception = new System.Threading.SynchronizationLockException(); break; case __HResults.COR_E_TARGETINVOCATION: exception = new System.Reflection.TargetInvocationException(null); break; case __HResults.COR_E_TARGETPARAMCOUNT: exception = new System.Reflection.TargetParameterCountException(); break; case __HResults.COR_E_TYPEINITIALIZATION: exception = InteropExtensions.CreateTypeInitializationException(message); break; case __HResults.COR_E_TYPELOAD: case __HResults.RO_E_METADATA_NAME_NOT_FOUND: case __HResults.CLR_E_BIND_TYPE_NOT_FOUND: exception = new TypeLoadException(); if (errorCode != __HResults.COR_E_TYPELOAD) shouldDisplayHR = true; break; case __HResults.COR_E_UNAUTHORIZEDACCESS: case __HResults.CTL_E_PATHFILEACCESSERROR: case unchecked((int)0x800A014F): exception = new UnauthorizedAccessException(); shouldDisplayHR = true; break; case __HResults.COR_E_VERIFICATION: exception = new System.Security.VerificationException(); break; case __HResults.E_NOTIMPL: exception = new NotImplementedException(); break; case __HResults.E_OUTOFMEMORY: case __HResults.CTL_E_OUTOFMEMORY: case unchecked((int)0x800A7919): exception = new OutOfMemoryException(); if (errorCode != __HResults.E_OUTOFMEMORY) shouldDisplayHR = true; break; #if ENABLE_WINRT case __HResults.E_XAMLPARSEFAILED: exception = ConstructExceptionUsingReflection( "Windows.UI.Xaml.Markup.XamlParseException, System.Runtime.WindowsRuntime.UI.Xaml, Version=4.0.0.0", message); break; case __HResults.E_ELEMENTNOTAVAILABLE: exception = ConstructExceptionUsingReflection( "Windows.UI.Xaml.Automation.ElementNotAvailableException, System.Runtime.WindowsRuntime.UI.Xaml, Version=4.0.0.0", message); break; case __HResults.E_ELEMENTNOTENABLED: exception = ConstructExceptionUsingReflection( "Windows.UI.Xaml.Automation.ElementNotEnabledException, System.Runtime.WindowsRuntime.UI.Xaml, Version=4.0.0.0", message); break; case __HResults.E_LAYOUTCYCLE: exception = ConstructExceptionUsingReflection( "Windows.UI.Xaml.LayoutCycleException, System.Runtime.WindowsRuntime.UI.Xaml, Version=4.0.0.0", message); break; #endif // ENABLE_WINRT case __HResults.COR_E_AMBIGUOUSMATCH: // AmbiguousMatchException case __HResults.COR_E_APPLICATION: // ApplicationException case __HResults.COR_E_APPDOMAINUNLOADED: // AppDomainUnloadedException case __HResults.COR_E_CANNOTUNLOADAPPDOMAIN: // CannotUnloadAppDomainException case __HResults.COR_E_CODECONTRACTFAILED: // ContractException case __HResults.COR_E_CONTEXTMARSHAL: // ContextMarshalException case __HResults.CORSEC_E_CRYPTO: // CryptographicException case __HResults.CORSEC_E_CRYPTO_UNEX_OPER: // CryptographicUnexpectedOperationException case __HResults.COR_E_EXECUTIONENGINE: // ExecutionEngineException case __HResults.COR_E_INSUFFICIENTEXECUTIONSTACK: // InsufficientExecutionStackException case __HResults.COR_E_INVALIDFILTERCRITERIA: // InvalidFilterCriteriaException case __HResults.COR_E_INVALIDPROGRAM: // InvalidProgramException case __HResults.COR_E_MULTICASTNOTSUPPORTED: // MulticastNotSupportedException case __HResults.COR_E_REMOTING: // RemotingException case __HResults.COR_E_RUNTIMEWRAPPED: // RuntimeWrappedException case __HResults.COR_E_SERVER: // ServerException case __HResults.COR_E_STACKOVERFLOW: // StackOverflowException case __HResults.CTL_E_OUTOFSTACKSPACE: // StackOverflowException case __HResults.COR_E_SYSTEM: // SystemException case __HResults.COR_E_TARGET: // TargetException case __HResults.COR_E_THREADABORTED: // TargetException case __HResults.COR_E_THREADINTERRUPTED: // ThreadInterruptedException case __HResults.COR_E_THREADSTATE: // ThreadStateException case __HResults.COR_E_THREADSTART: // ThreadStartException case __HResults.COR_E_TYPEUNLOADED: // TypeUnloadedException case __HResults.CORSEC_E_POLICY_EXCEPTION: // PolicyException case __HResults.CORSEC_E_NO_EXEC_PERM: // PolicyException case __HResults.CORSEC_E_MIN_GRANT_FAIL: // PolicyException case __HResults.CORSEC_E_XMLSYNTAX: // XmlSyntaxException case __HResults.ISS_E_ALLOC_TOO_LARGE: // IsolatedStorageException case __HResults.ISS_E_BLOCK_SIZE_TOO_SMALL: // IsolatedStorageException case __HResults.ISS_E_CALLER: // IsolatedStorageException case __HResults.ISS_E_CORRUPTED_STORE_FILE: // IsolatedStorageException case __HResults.ISS_E_CREATE_DIR: // IsolatedStorageException case __HResults.ISS_E_CREATE_MUTEX: // IsolatedStorageException case __HResults.ISS_E_DEPRECATE: // IsolatedStorageException case __HResults.ISS_E_FILE_NOT_MAPPED: // IsolatedStorageException case __HResults.ISS_E_FILE_WRITE: // IsolatedStorageException case __HResults.ISS_E_GET_FILE_SIZE: // IsolatedStorageException case __HResults.ISS_E_ISOSTORE: // IsolatedStorageException case __HResults.ISS_E_LOCK_FAILED: // IsolatedStorageException case __HResults.ISS_E_MACHINE: // IsolatedStorageException case __HResults.ISS_E_MACHINE_DACL: // IsolatedStorageException case __HResults.ISS_E_MAP_VIEW_OF_FILE: // IsolatedStorageException case __HResults.ISS_E_OPEN_FILE_MAPPING: // IsolatedStorageException case __HResults.ISS_E_OPEN_STORE_FILE: // IsolatedStorageException case __HResults.ISS_E_PATH_LENGTH: // IsolatedStorageException case __HResults.ISS_E_SET_FILE_POINTER: // IsolatedStorageException case __HResults.ISS_E_STORE_NOT_OPEN: // IsolatedStorageException case __HResults.ISS_E_STORE_VERSION: // IsolatedStorageException case __HResults.ISS_E_TABLE_ROW_NOT_FOUND: // IsolatedStorageException case __HResults.ISS_E_USAGE_WILL_EXCEED_QUOTA: // IsolatedStorageException case __HResults.E_FAIL: default: break; } if (exception == null) { if (createCOMException) { exception = new COMException(); if (errorCode != __HResults.E_FAIL) shouldDisplayHR = true; } else { exception = new Exception(); if (errorCode != __HResults.COR_E_EXCEPTION) shouldDisplayHR = true; } } bool shouldConstructMessage = false; if (hasErrorInfo) { // If there is a IErrorInfo/IRestrictedErrorInfo, only construct a new error message if // the message is not available and do not use the shouldDisplayHR setting if (message == null) shouldConstructMessage = true; } else { // If there is no IErrorInfo, use the shouldDisplayHR setting from the big switch/case above shouldConstructMessage = shouldDisplayHR; } if (shouldConstructMessage) { // // Append the HR into error message, just in case the app wants to look at the HR in // message to determine behavior. We didn't expose HResult property until v4.5 and // GetHRFromException has side effects so probably Message was their only choice. // This behavior is probably not exactly the same as in desktop but it is fine to append // more message at the end. In any case, having the HR in the error message are helpful // to developers. // This makes sure: // 1. We always have a HR 0xNNNNNNNN in the message // 2. Put in a nice "Exception thrown from HRESULT" message if we can // 3. Wrap it in () if there is an existing message // // TODO: Add Symbolic Name into Messaage, convert 0x80020006 to DISP_E_UNKNOWNNAME string hrMessage = String.Format("{0} 0x{1}", SR.Excep_FromHResult, errorCode.LowLevelToString()); message = ExternalInterop.GetMessage(errorCode); // Always make sure we have at least the HRESULT part in retail build or when the message // is empty. if (message == null) message = hrMessage; else message = message + " (" + hrMessage + ")"; } if (message != null) { // Set message explicitly rather than calling constructor because certain ctors would append a // prefix to the message and that is not what we want InteropExtensions.SetExceptionMessage(exception, message); } InteropExtensions.SetExceptionErrorCode(exception, errorCode); return exception; }
public void UpdateFileInfo() { if (this.assemblyReferences != null) { foreach (AssemblyReference reference in this.assemblyReferences) { if (!string.IsNullOrEmpty(reference.ResolvedPath)) { try { this.UpdateAssemblyReference(reference); if (reference.AssemblyIdentity == null) { BadImageFormatException exception = new BadImageFormatException(null, reference.ResolvedPath); this.OutputMessages.AddErrorMessage("GenerateManifest.General", new string[] { exception.Message }); } } catch (Exception exception2) { this.OutputMessages.AddErrorMessage("GenerateManifest.General", new string[] { exception2.Message }); } } } } if (this.fileReferences != null) { foreach (FileReference reference2 in this.fileReferences) { if (!string.IsNullOrEmpty(reference2.ResolvedPath)) { try { UpdateFileReference(reference2); } catch (Exception exception3) { this.OutputMessages.AddErrorMessage("GenerateManifest.General", new string[] { exception3.Message }); } } } } }
/// <summary> /// Implementation of UpdateFileInfo /// </summary> /// <param name="targetFrameworkVersion">null, if not TFV. If no TFV, it will use sha256 signature algorithm.</param> private void UpdateFileInfoImpl(string targetFrameworkVersion) { if (_assemblyReferences != null) foreach (AssemblyReference a in _assemblyReferences) if (!String.IsNullOrEmpty(a.ResolvedPath)) // only check resolved items... { try { UpdateAssemblyReference(a, targetFrameworkVersion); if (a.AssemblyIdentity == null) { BadImageFormatException exception = new BadImageFormatException(null, a.ResolvedPath); OutputMessages.AddErrorMessage("GenerateManifest.General", exception.Message); } } catch (System.Exception e) { OutputMessages.AddErrorMessage("GenerateManifest.General", e.Message); } } if (_fileReferences != null) foreach (FileReference f in _fileReferences) if (!String.IsNullOrEmpty(f.ResolvedPath)) // only check resolved items... { try { UpdateFileReference(f, targetFrameworkVersion); } catch (System.Exception e) { OutputMessages.AddErrorMessage("GenerateManifest.General", e.Message); } } }
public void Constructor2_Message_Null () { BadImageFormatException bif = new BadImageFormatException ((string) null); #if NET_2_0 Assert.IsNotNull (bif.Data, "#1"); #endif Assert.IsNull (bif.FileName, "#2"); Assert.IsNull (bif.InnerException, "#3"); #if NET_2_0 Assert.IsNotNull (bif.Message, "#4"); // Could not load file or assembly '' ... Assert.IsTrue (bif.Message.IndexOf ("''") != -1, "#5"); #else Assert.IsNotNull (bif.Message, "#4"); // Format of the executable (.exe) or library ... Assert.IsFalse (bif.Message.IndexOf ("''") != -1, "#5"); #endif Assert.IsNull (bif.FusionLog, "#5"); Assert.IsTrue (bif.ToString ().StartsWith (bif.GetType ().FullName), "#6"); #if NET_2_0 Assert.IsTrue (bif.ToString ().IndexOf ("''") != -1, "#7"); #else Assert.IsFalse (bif.ToString ().IndexOf ("''") != -1, "#7"); #endif }
public void Constructor3 () { ArithmeticException ame = new ArithmeticException ("something"); BadImageFormatException bif = new BadImageFormatException ("message", ame); Assert.IsNotNull (bif.Data, "#1"); Assert.IsNull (bif.FileName, "#2"); Assert.IsNotNull (bif.InnerException, "#3"); Assert.AreSame (ame, bif.InnerException, "#4"); Assert.IsNotNull (bif.Message, "#5"); Assert.AreEqual ("message", bif.Message, "#6"); Assert.IsNull (bif.FusionLog, "#7"); Assert.AreEqual (bif.GetType ().FullName + ": message ---> " + ame.GetType ().FullName + ": something", bif.ToString (), "#8"); }
public void GetFusionLog_Fail_ControlEvidence () { BadImageFormatException fle = new BadImageFormatException (); Assert.IsNull (fle.FusionLog, "FusionLog"); }
private static void ReportBadImageFormatErrorLoadingAssembly(BadImageFormatException ex) { MessageBox.Show( string.Format( CultureInfo.CurrentCulture, Properties.Resources.BadImageExceptionWhenLoading, ex.Message), Properties.Resources.ErrorLoadingAssembly, MessageBoxButton.OK); }
public void Constructor4_FileNameAndMessage_Null () { BadImageFormatException bif = new BadImageFormatException ((string) null, (string) null); #if NET_2_0 Assert.IsNotNull (bif.Data, "#1"); #endif Assert.IsNull (bif.FileName, "#2"); Assert.IsNull (bif.InnerException, "#3"); #if NET_2_0 Assert.IsNotNull (bif.Message, "#4"); // Could not load file or assembly '' ... Assert.IsTrue (bif.Message.IndexOf ("''") != -1, "#5"); #else Assert.IsNotNull (bif.Message, "#4"); // Format of the executable (.exe) or library ... Assert.IsFalse (bif.Message.IndexOf ("''") != -1, "#5"); #endif Assert.IsNull (bif.FusionLog, "#5"); Assert.IsTrue (bif.ToString ().StartsWith (bif.GetType ().FullName + ": "), "#6"); #if !TARGET_JVM // ToString always has a stack trace under TARGET_JVM Assert.IsFalse (bif.ToString ().IndexOf (Environment.NewLine) != -1, "#7"); #endif // TARGET_JVM }
public void Constructor3_Message_Null () { ArithmeticException ame = new ArithmeticException ("something"); BadImageFormatException bif = new BadImageFormatException ((string) null, ame); Assert.IsNotNull (bif.Data, "#1"); Assert.IsNull (bif.FileName, "#2"); Assert.IsNotNull (bif.InnerException, "#3"); Assert.AreSame (ame, bif.InnerException, "#4"); Assert.IsNotNull (bif.Message, "#5"); // Could not load file or assembly '' ... Assert.IsTrue (bif.Message.IndexOf ("''") != -1, "#6"); Assert.IsNull (bif.FusionLog, "#7"); Assert.IsTrue (bif.ToString ().StartsWith (bif.GetType ().FullName), "#8"); Assert.IsTrue (bif.ToString ().IndexOf ("---> " + ame.GetType ().FullName) != -1, "#9"); Assert.IsFalse (bif.ToString ().IndexOf (Environment.NewLine) != -1, "#10"); }
public void Constructor4_FileName_Null () { BadImageFormatException bif = new BadImageFormatException ("message", (string) null); Assert.IsNotNull (bif.Data, "#A1"); Assert.IsNull (bif.FileName, "#A2"); Assert.IsNull (bif.InnerException, "#A3"); Assert.IsNotNull (bif.Message, "#A4"); Assert.AreEqual ("message", bif.Message, "#A5"); Assert.IsNull (bif.FusionLog, "#A6"); Assert.AreEqual (bif.GetType ().FullName + ": message", bif.ToString (), "#A7"); bif = new BadImageFormatException (string.Empty, (string) null); Assert.IsNotNull (bif.Data, "#B1"); Assert.IsNull (bif.FileName, "#B2"); Assert.IsNull (bif.InnerException, "#B3"); Assert.IsNotNull (bif.Message, "#B4"); Assert.AreEqual (string.Empty, bif.Message, "#B5"); Assert.IsNull (bif.FusionLog, "#B6"); Assert.AreEqual (bif.GetType ().FullName + ": ", bif.ToString (), "#B7"); }
public void GetFusionLog_Fail_ControlPolicy () { BadImageFormatException fle = new BadImageFormatException (); Assert.IsNull (fle.FusionLog, "FusionLog"); // we don't have to throw the exception to have FusionLog // informations restricted (even if there could be no // data in this state). }
public void Constructor4_Message_Empty () { BadImageFormatException bif = null; bif = new BadImageFormatException (string.Empty, "file.txt"); Assert.IsNotNull (bif.Data, "#1"); Assert.IsNotNull (bif.FileName, "#2"); Assert.AreEqual ("file.txt", bif.FileName, "#3"); Assert.IsNull (bif.InnerException, "#4"); Assert.IsNotNull (bif.Message, "#5"); Assert.AreEqual (string.Empty, bif.Message, "#6"); Assert.IsNull (bif.FusionLog, "#7"); Assert.IsTrue (bif.ToString ().StartsWith (bif.GetType ().FullName + ": " + Environment.NewLine), "#8"); Assert.IsTrue (bif.ToString ().IndexOf ("'file.txt'") != -1, "#9"); Assert.IsFalse (bif.ToString ().IndexOf ("\"file.txt\"") != -1, "#10"); }
internal UnsupportedMetadataTypeSymbol(BadImageFormatException mrEx = null) { _mrEx = mrEx; }
public void Constructor3_Message_Empty () { ArithmeticException ame = new ArithmeticException ("something"); BadImageFormatException bif = new BadImageFormatException (string.Empty, ame); #if NET_2_0 Assert.IsNotNull (bif.Data, "#1"); #endif Assert.IsNull (bif.FileName, "#2"); Assert.IsNotNull (bif.InnerException, "#3"); Assert.AreSame (ame, bif.InnerException, "#4"); Assert.IsNotNull (bif.Message, "#5"); Assert.AreEqual (string.Empty, bif.Message, "#6"); Assert.IsNull (bif.FusionLog, "#7"); #if TARGET_JVM // ToString always has a stack trace under TARGET_JVM Assert.IsTrue (bif.ToString ().IndexOf (ame.GetType ().FullName + ": something") != -1, "#8"); #else Assert.AreEqual (bif.GetType ().FullName + ": ---> " + ame.GetType ().FullName + ": something", bif.ToString (), "#8"); #endif // TARGET_JVM }