logging-log4net-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dominik Psenner (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (LOG4NET-388) [PATCH] NotSupportedException is thrown in SystemInfo.AssemblyLocationInfo for dynamic assemblies
Date Wed, 14 Aug 2013 06:38:47 GMT

    [ 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:37 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 ---
                
      was (Author: nachbarslumpi):
    Is your code able to detect dynamic assemblies when running on Mono?
                  
> [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

Mime
View raw message