[ https://issues.apache.org/jira/browse/LOG4NET-388?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13739278#comment-13739278 ]
Dominik Psenner edited comment on LOG4NET-388 at 8/14/13 6:40 AM: ------------------------------------------------------------------ Is your code able to detect dynamic assemblies when running on Mono? There may be dragons: --- quote --- if (assembly is System.Reflection.Emit.AssemblyBuilder) { return true; } try { if (assembly.GetType().FullName == "System.Reflection.Emit.InternalAssemblyBuilder") { return true; } } catch (TargetInvocationException) { } --- /quote --- I'm inclined to keep the method as simple as: --- quote --- public static string AssemblyLocationInfo(Assembly myAssembly) { #if NETCF return "Not supported on Microsoft .NET Compact Framework"; #else if (myAssembly.GlobalAssemblyCache) { return "Global Assembly Cache"; } #if NET_4_0 else if (myAssembly.IsDynamic) { return "Dynamic Assembly"; } #endif else { try { // This call requires FileIOPermission for access to the path // if we don't have permission then we just ignore it and // carry on. return myAssembly.Location; } catch (NotSupportedException) { // The location information may be unavailable for dynamic assemblies and a NotSupportedException // is thrown in those cases. See: http://msdn.microsoft.com/de-de/library/system.reflection.assembly.location.aspx return "Dynamic Assembly"; } catch (ArgumentException ex) { return "Location Detect Failed (" + ex.Message + ")"; } catch (System.Security.SecurityException) { return "Location Permission Denied"; } } #endif } --- /quote --- Opinions? was (Author: nachbarslumpi): Is your code able to detect dynamic assemblies when running on Mono? There may be dragons: --- quote --- if (assembly is System.Reflection.Emit.AssemblyBuilder) { return true; } try { if (assembly.GetType().FullName == "System.Reflection.Emit.InternalAssemblyBuilder") { return true; } } catch (TargetInvocationException) { } --- /quote --- I'm inclined to keep the method as simple as: --- quote --- public static string AssemblyLocationInfo(Assembly myAssembly) { #if NETCF return "Not supported on Microsoft .NET Compact Framework"; #else if (myAssembly.GlobalAssemblyCache) { return "Global Assembly Cache"; } #if NET_4_0 else if (myAssembly.IsDynamic) { return "Dynamic Assembly"; } #endif else { try { // This call requires FileIOPermission for access to the path // if we don't have permission then we just ignore it and // carry on. return myAssembly.Location; } catch (NotSupportedException) { // The location information may be unavailable for dynamic assemblies and a NotSupportedException // is thrown in those cases. See: http://msdn.microsoft.com/de-de/library/system.reflection.assembly.location.aspx return "Dynamic Assembly"; } catch (ArgumentException ex) { return "Location Detect Failed (" + ex.Message + ")"; } catch (System.Security.SecurityException) { return "Location Permission Denied"; } } #endif } --- /quote --- > [PATCH] NotSupportedException is thrown in SystemInfo.AssemblyLocationInfo > for dynamic assemblies > ------------------------------------------------------------------------------------------------- > > Key: LOG4NET-388 > URL: https://issues.apache.org/jira/browse/LOG4NET-388 > Project: Log4net > Issue Type: Bug > Components: Core > Affects Versions: 1.2.11 > Reporter: Piotr Westfalewicz > Priority: Minor > Labels: easyfix, patch > Attachments: NotSupportedExceptionInSystemInfo2.patch, > NotSupportedExceptionInSystemInfo.patch > > > For dynamic assemblies "Location" property shouldn't be used > (http://msdn.microsoft.com/en-us/library/system.reflection.assembly.location.aspx). > Therefore in log4net.Util.SystemInfo we can test if assembly is dynamic and > in result avoid exception. > Exception is very annoying and popular with NHibernate 3.3.3.4001. > I have added both fix and test. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira