I'm trying to implement the $p library to recognize gestures for spell casting in a game but I'm getting a Unhandled Exception. I'm using the precompile dll I got from their website and its compiled in the .Net 4 framework, so I'm guessing this is where the problem is coming from. Here is the error:
Unhandled Exception: System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded.
at (wrapper managed-to-native) System.Reflection.Assembly:GetTypes (bool)
at System.Reflection.Assembly.GetTypes () [0x00000] in <filename unknown>:0
at Mono.CSharp.RootNamespace.ComputeNamespaces (System.Reflection.Assembly assembly, System.Type extensionType) [0x00000] in <filename unknown>:0
at Mono.CSharp.RootNamespace.ComputeNamespace (Mono.CSharp.CompilerContext ctx, System.Type extensionType) [0x00000] in <filename unknown>:0
at Mono.CSharp.GlobalRootNamespace.ComputeNamespaces (Mono.CSharp.CompilerContext ctx) [0x00000] in <filename unknown>:0
at Mono.CSharp.Driver.LoadReferences () [0x00000] in <filename unknown>:0
at Mono.CSharp.Driver.Compile () [0x00000] in <filename unknown>:0
at Mono.CSharp.Driver.Main (System.String[] args) [0x00000] in <filename unknown>:0
Missing method .ctor in assembly C:\Users\Uri\Desktop\GestureSpell\GestureSpell\Assets\PDollarGestureRecognizer.dll, type System.Runtime.Versioning.TargetFrameworkAttribute
The class System.Runtime.Versioning.TargetFrameworkAttribute could not be loaded, used in PDollarGestureRecognizer
Can't find custom attr constructor image: C:\Users\Uri\Desktop\GestureSpell\GestureSpell\Assets\PDollarGestureRecognizer.dll mtoken: 0x0a00000d
You can try changing true to false in your .csproj file. That helps in some cases.
Related
I use the method GetCustomAttributes from the extension class CustomAttributeExtensions:
var serviceInterface = service.GetInterfaces().FirstOrDefault(i => i.GetCustomAttributes().Contains(new ServiceContractAttribute()));
When I run my application under mono 4.0 on debian I get the following exception:
Missing method GetCustomAttributes in assembly /root/mkmServer/MKMWatcher.Services.exe, type System.Reflection.CustomAttributeExtensions
Unhandled Exception: System.TypeLoadException: Could not load type 'System.Reflection.CustomAttributeExtensions' from assembly 'MKMWatcher.Services'.
at System.Linq.Enumerable.First[Type] (IEnumerable`1 source, System.Func`2 predicate, Fallback fallback) [0x00000] in <filename unknown>:0
at System.Linq.Enumerable.FirstOrDefault[Type] (IEnumerable`1 source, System.Func`2 predicate) [0x00000] in <filename unknown>:0
at MKMWatcher.Services.ServiceManager.CreateService (System.Type service, System.String serviceAddress) [0x00000] in <filename unknown>:0
at MKMWatcher.Services.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeLoadException: Could not load type 'System.Reflection.CustomAttributeExtensions' from assembly 'MKMWatcher.Services'.
at System.Linq.Enumerable.First[Type] (IEnumerable`1 source, System.Func`2 predicate, Fallback fallback) [0x00000] in <filename unknown>:0
at System.Linq.Enumerable.FirstOrDefault[Type] (IEnumerable`1 source, System.Func`2 predicate) [0x00000] in <filename unknown>:0
at MKMWatcher.Services.ServiceManager.CreateService (System.Type service, System.String serviceAddress) [0x00000] in <filename unknown>:0
at MKMWatcher.Services.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0
When I decompile the mscorlib.dll from mono which should contain the class I don't find it in his namespace:
But when I take a look at the mono github repository, the class is present: https://github.com/mono/mono/blob/master/mcs/class/referencesource/mscorlib/system/reflection/CustomAttributeExtensions.cs
Do you know what's happening ? Are the assemblies deployed in the latest version of mono not reflecting... their source code ? The file haven't been touched for a while and it's not like it was a new feature... Any ideas ? Any solution that does not involve for me to get the latest mono source and compile them by hand ?
Thank you in advance for you answers.
I'm working on a school project and I'm trying to log data that is stored from a game that I made in unity.
My problem is that I want to email the data true the app. Everything works fine, email is sending with the data etc. But when I build the app to an iOS device it is not sending the email.
I do not have any errors in unity but I get this error in Xcode when I build the app.See the error below. I hope someone can help me.
Greetings,
Georgi Iliev
MissingMethodException: Method not found: 'Default constructor not found...ctor() of System.Net.Configuration.MailSettingsSectionGroup'.
at Mono.Security.Authenticode.AuthenticodeBase.GetSecurityEntry () [0x00000] in <filename unknown>:0
at System.Activator.CreateInstance (System.Type type, System.Object[] args) [0x00000] in <filename unknown>:0
at System.Configuration.Configuration.GetSectionGroupInstance (System.Configuration.SectionGroupInfo group) [0x00000] in <filename unknown>:0
at System.Configuration.ConfigurationSectionGroupCollection.get_Item (System.String name) [0x00000] in <filename unknown>:0
at System.Configuration.Configuration.GetSection (System.String path) [0x00000] in <filename unknown>:0
at System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection (System.String configKey) [0x00000] in <filename unknown>:0
at System.Configuration.ConfigurationManager.GetSection (System.String sectionName) [0x00000] in <filename unknown>:0
at System.Net.Mail.SmtpClient..ctor (System.String host, Int32 port) [0x00000] in <filename unknown>:0
at MonoGmail.Start () [0x00000] in <filename unknown>:0
(Filename: currently not available on il2cpp Line: -1)
added #programmers solution and got a new mixed error.
MissingMethodException: Method not found: 'Default constructor not found...ctor() of System.Net.Configuration.MailSettingsSectionGroup'.
at StartMenu.CloseApp () [0x00000] in <filename unknown>:0
at System.Activator.CreateInstance (System.Type type, Boolean nonPublic) [0x00000] in <filename unknown>:0
at System.Configuration.ConfigInfo.CreateInstance () [0x00000] in <filename unknown>:0
at System.Collections.Generic.Comparer`1[T].get_Default () [0x00000] in <filename unknown>:0
at System.Configuration.Configuration.GetSectionGroupInstance (System.Configuration.SectionGroupInfo group) [0x00000] in <filename unknown>:0
at System.Configuration.ConfigurationSectionGroupCollection.get_Item (System.String name) [0x00000] in <filename unknown>:0
at System.Configuration.Configuration.GetSection (System.String path) [0x00000] in <filename unknown>:0
at System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection (System.String configKey) [0x00000] in <filename unknown>:0
at System.MonoTODOAttribute..ctor () [0x00000] in <filename unknown>:0
at System.Configuration.ConfigurationManager.GetSection (System.String sectionName) [0x00000] in <filename unknown>:0
at System.Net.Mail.SmtpClient..ctor (System.String host, Int32 port) [0x00000] in <filename unknown>:0
at System.Net.Mail.SmtpClient..ctor (System.String host) [0x00000] in <filename unknown>:0
at Mono_Gmail.Start () [0x00000] in <filename unknown>:0
at System.Array.GetGenericValueImpl[T] (Int32 pos, .T& value) [0x00000] in <filename unknown>:0
at System.Array.GetGenericValueImpl[T] (Int32 pos, .T& value) [0x00000] in <filename unknown>:0
at System.Array.GetGenericValueImpl[T] (Int32 pos, .T& value) [0x00000] in <filename unknown>:0
at System.Array.GetGenericValueImpl[T] (Int32 pos, .T& value) [0x00000] in <filename unknown>:0
System.Array:GetGenericValueImpl(Int32, T&)
System.Array:GetGenericValueImpl(Int32, T&)
System.Array:GetGenericValueImpl(Int32, T&)
System.Array:GetGenericValueImpl(Int32, T&)
(Filename: currently not available on il2cpp Line: -1)
This is a bug in IL2CPP. Unity does not have any plan to fix this issue any time soon because there is a temporary solution to fix it.
In your link.xml, add the following to it.
<linker>
<assembly fullname="System">
<type fullname="System.Net.Configuration.MailSettingsSectionGroup" preserve="all"/>
<type fullname="System.Net.Configuration.SmtpSection" preserve="all"/>
<type fullname="System.Net.Configuration.SmtpNetworkElement" preserve="all"/>
</assembly>
</linker>
It is basically telling Xcode to not strip these mail stuff out.
If you don't have link.xml, create it and put the code above in it then place the file in the Asset folder. Rebuild the project.
EDIT:
According to a comment below, it is now required to add the line below too:
<type fullname="System.Net.Configuration.SmtpSpecifiedPickupDirectoryElement" preserve="all"/>
We're creating a game for iOS and android using Unity3d (version 5.0.1p1), and since we are using Parse.com data services we naturally went with it to implement the remote push notifications.
The problem is that after building the game and running it on a test device (iPhone 4s iOS8.1.2) we get at game start an execution engine exception that we cant figure out. Here is the exception :
ExecutionEngineException: Attempting to call method
'System.Reflection.MonoProperty::StaticGetterAdapterFrame' for which no ahead of time (AOT) code was
generated.
at System.Reflection.EventInfo+AddEventAdapter.Invoke (System.Object
_this, System.Delegate dele)
[0x00000] in <filename unknown>:0
at System.Reflection.MonoProperty+GetterAdapter.Invoke (System.Object
_this) [0x00000] in <filename
unknown>:0
at AOGenerator.BlurBuffer () [0x00000] in <filename unknown>:0
at System.Reflection.MonoProperty.GetValue (System.Object obj, System.Object[] index) [0x00000] in
<filename unknown>:0
at Newtonsoft.Json.Bson.BsonRegex.get_Type () [0x00000] in <filename unknown>:0
at Parse.ParseInstallation.get_Badge () [0x00000] in <filename unknown>:0
at Parse.ParseInstallation.SetPlatformAutomaticValue () [0x00000] in <filename unknown>:0
at Parse.ParseInstallation.SetAutomaticValues () [0x00000] in <filename unknown>:0
at Parse.ParseInstallation.SaveAsync (System.Threading.Tasks.Task toAwait, CancellationToken
cancellationToken) [0x00000] in <filename unknown>:0
at Parse.PlatformHooks+<>c__DisplayClass38.<RequestAsync>b__33 (System.Threading.Tasks.Task`1 _)
[0x00000] in <filename unknown>:0
at Parse.ParseObject+<>c__DisplayClass18.<SaveAsync>b__17 (System.Threading.Tasks.Task toAwait)
[0x00000] in <filename unknown>:0
at FlurryAnalyticsIOS.SetSessionTimeout (Int32 seconds) [0x00000] in <filename unknown>:0
at
System.Collections.Generic.Dictionary`2[System.Int64,System.Boolean].Do_ICollectionCopyTo[KeyValuePair`2]
(System.Array array, Int32 index, System.Collections.Generic.Transform`1 transform) [0x00000] in <filename
unknown>:0
at Parse.Internal.TaskQueue.Enqueue[Task] (System.Func`2 taskStart, CancellationToken cancellationToken)
[0x00000] in <filename unknown>:0
at Parse.ParseObject.SaveAsync (CancellationToken cancellationToken) [0x00000] in <filename unknown>:0
at Parse.ParseObject.SaveAsync () [0x00000] in <filename unknown>:0
at Parse.ParseInitializeBehaviour.<Awake>b__0 (System.Byte[] deviceToken) [0x00000] in <filename
unknown>:0
at FlurryAnalyticsIOS.SetSessionTimeout (Int32 seconds) [0x00000] in <filename unknown>:0
at Newtonsoft.Json.Bson.BsonRegex.get_Type () [0x00000] in <filename unknown>:0
at Parse.PlatformHooks+<>c__DisplayClass24.<RegisterDeviceTokenRequest>b__22 () [0x00000] in
<filename unknown>:0
at System.Action.Invoke () [0x00000] in <filename unknown>:0
at Newtonsoft.Json.Bson.BsonRegex.get_Type () [0x00000] in <filename unknown>:0
at Parse.PlatformHooks+<RunDispatcher>d__44.MoveNext () [0x00000] in <filename unknown>:0
at System.Nullable`1[System.DateTimeOffset].ToString () [0x00000] in <filename unknown>:0
System.Nullable`1:ToString()
UnityEngine.Debug:Internal_LogException(Exception, Object)
UnityEngine.Debug:LogException(Exception)
Parse.<RunDispatcher>d__44:MoveNext()
System.Nullable`1:ToString()
The problem just appeared with the new Unity Parse SDK 1.5 (which contains the PNS feature). What we know is that running an empty project with just the parse sdk goes fine and the notifications work just fine, but in our actual project, because of the exception, devices dont register for the notifications in parse, so we are assuming there is a kind of a conflict between parse and one of the other tools we are using.
FYI : We are building the game using IL2CPP for a universal architecture (we re also building with .Net 2.0 subset, but I dont think that this has something to do with the problem).
Thank you for your time and for your answers.
UPDATE ::
We tried to build using Mono(2.x) this time and we have pretty much the same exception that turned into this :
ExecutionEngineException: Attempting to JIT compile method
'System.Reflection.MonoProperty:StaticGetterAdapterFrame
(System.Reflection.MonoProperty/StaticGetter`1,object)' while
running with aotonly.
at System.Reflection.MonoProperty.GetValue (System.Object obj,
System.Object[] index)
[0x00000] in :0
at Parse.ParseInstallation.get_Badge () [0x00000] in :0
at Parse.ParseInstallation.SetPlatformAutomaticValue () [0x00000] in
unknown>:0
at Parse.ParseInstallation.SetAutomaticValues () [0x00000] in
:0
at Parse.ParseInstallation.SaveAsync (System.Threading.Tasks.Task
toAwait,
CancellationToken cancellationToken) [0x00000] in :0
at Parse.ParseObject+<>c__DisplayClass18.b__17
(System.Threading.Tasks.Task toAwait) [0x00000] in :0
at Parse.Internal.TaskQueue.Enqueue[Task] (System.Func`2 taskStart,
CancellationToken
cancellationToken) [0x00000] in :0
at Parse.ParseObject.SaveAsync (CancellationToken cancellationToken)
[0x00000] in
:0
at Parse.ParseObject.SaveAsync () [0x00000] in :0
at Parse.ParseInitializeBehaviour.b__0 (System.Byte[]
deviceToken) [0x00000] in
:0
at
Parse.PlatformHooks+<>c__DisplayClass24.b__22
()
[0x00000] in :0
at Parse.PlatformHooks+d__44.MoveNext () [0x00000] in
unknown>:0
UnityEngine.Debug:Internal_LogException(Exception, Object)
UnityEngine.Debug:LogException(Exception)
Parse.d__44:MoveNext()
Hopes it bring you guys more details about the problem.
Update 2 ::
We know exactly what causes the exception to happen and unfortunately we have no control over it, its when we register for notification, we do it this way :
using NotificationServices = UnityEngine.iOS.NotificationServices;
using NotificationType = UnityEngine.iOS.NotificationType;
/*
.
.
.
*/
void ACalledFunction ()
{
// Ask for permission for push notifications (Can Receive deviceToken)
#if UNITY_IPHONE
NotificationServices.RegisterForNotifications(
NotificationType.Alert |
NotificationType.Badge |
NotificationType.Sound);
#endif
}
}
UPDATE 15/06/2015 : Parse Unity SDK 1.5.1 (il2cpp scripting backend)
We re still having the same error when trying to register for parse PNs :
ExecutionEngineException: Attempting to call method
'System.Reflection.MonoProperty::StaticGetterAdapterFrame' for which
no ahead of time (AOT) code was generated.
System.Reflection.MonoProperty+GetterAdapter.Invoke (System.Object
_this) System.Reflection.MonoProperty+GetterAdapter.Invoke (System.Object _this) CurvedText.OnRectTransformDimensionsChange ()
System.Reflection.MonoProperty.GetValue (System.Object obj,
System.Object[] index)
Newtonsoft.Json.Bson.BsonString.set_IncludeLength (Boolean value)
Parse.ParseInstallation.get_Badge ()
Parse.ParseInstallation.SetPlatformAutomaticValue ()
Parse.ParseInstallation.SetAutomaticValues ()
Parse.ParseInstallation.SaveAsync (System.Threading.Tasks.Task
toAwait, CancellationToken cancellationToken)
Parse.PlatformHooks+<>c__DisplayClass42.b__36 (System.Object _)
Parse.ParseObject+<>c__DisplayClass18.b__17
(System.Threading.Tasks.Task toAwait)
FlurryAnalyticsIOS.SetSessionTimeout (Int32 seconds)
Parse.ParseObject.SetProperty[ParseACL] (Parse.ParseACL value,
System.String propertyName) Parse.Internal.TaskQueue.Enqueue[Task]
(System.Func2 taskStart, CancellationToken cancellationToken)
Parse.ParseObject.SaveAsync (CancellationToken cancellationToken)
Parse.ParseObject.SaveAsync () Parse.ParseInitializeBehaviour.b__0
(System.Byte[] deviceToken) FlurryAnalyticsIOS.SetSessionTimeout
(Int32 seconds) Newtonsoft.Json.Bson.BsonString.set_IncludeLength
(Boolean value) Parse.PlatformHooks+<>c__DisplayClass24.b__22 ()
System.Action.Invoke ()
Newtonsoft.Json.Bson.BsonString.set_IncludeLength (Boolean value)
Parse.PlatformHooks+d__44.MoveNext ()
System.Array+InternalEnumerator1[System.UInt64].get_Current ()
UnityEngine.Debug:LogException(Exception) Parse.d__44:MoveNext()
System.InternalEnumerator`1:get_Current()
It is possible to use reflection with AOT builds (both using the Mono scripting backend and the IL2CPP scripting backend). The restriction is really on using anything in the System.Reflection.Emit namespace.
Some parts of the mscorlib.dll assembly that ship with the Unity version of Mono are not friendly to AOT code paths, and System.Reflection.MonoProperty::StaticGetterAdapterFrame is one of them. This code won't work with an AOT build, but unfortunately it is not something that Unity can determine at compile time, so the error will only happen at runtime.
This is probably an issue to bring up on the Parse SDK forums. It may be that the SDK can be used differently to avoid this issue.
To be more precise, here is the error I get when I try to run an application built using monogame:
System.DllNotFoundException: SDL2.dll
at (wrapper managed-to-native) SDL2.SDL:SDL_SetMainReady ()
at Microsoft.Xna.Framework.SDL2_GameWindow..ctor () [0x00000] in <filename unknown>:0
at Microsoft.Xna.Framework.SDL2_GamePlatform..ctor (Microsoft.Xna.Framework.Game game) [0x00000] in <filename unknown>:0
at Microsoft.Xna.Framework.GamePlatform.Create (Microsoft.Xna.Framework.Game game) [0x00000] in <filename unknown>:0
at Microsoft.Xna.Framework.Game..ctor () [0x00000] in <filename unknown>:0
at MovingTeddyBears.Game1..ctor () [0x00000] in <filename unknown>:0
at MovingTeddyBears.Program.Main () [0x00000] in /home/Dan/Desktop/MonoDevelopPrograms/LinuxMonoGameMovingTeddyBears/Program.cs:19
There are no errors on compiling the program, but when I run it, I get the above output.
I am on linux mint running monodevelop 3.0.3
ldconfig -p | grep libSDL2
libSDL2_image-2.0.so.0 (libc6,x86-64) => /usr/local/lib/libSDL2_image-2.0.so.0
libSDL2-2.0.so.0 (libc6,x86-64) => /usr/local/lib/libSDL2-2.0.so.0
Any help is welcome please help me resolve this.
After installing Glimpse,
my ~/signalr/hubs stopped working at Mono productions server.
However it still works when running locally using IIS Express.
System.ArgumentNullException
Argument cannot be null.
Parameter name: httpContext
at System.Web.HttpContextWrapper..ctor (System.Web.HttpContext httpContext) [0x00000] in <filename unknown>:0
at Glimpse.AspNet.AspNetFrameworkProvider.get_Context () [0x00000] in <filename unknown>:0
at Glimpse.AspNet.AspNetFrameworkProvider.get_HttpRequestStore () [0x00000] in <filename unknown>:0
at Glimpse.Core.Framework.GlimpseRuntime.GetRuntimePolicy (RuntimeEvent runtimeEvent) [0x00000] in <filename unknown>:0
at Glimpse.Core.Framework.GlimpseRuntime.HasOffRuntimePolicy (RuntimeEvent policyName) [0x00000] in <filename unknown>:0
at Glimpse.Core.Framework.GlimpseRuntime.EndSessionAccess () [0x00000] in <filename unknown>:0
at Glimpse.AspNet.HttpModule.EndSessionAccess (System.Web.HttpContextBase httpContext) [0x00000] in <filename unknown>:0
at Glimpse.AspNet.HttpModule.<Init>b__2 (System.Object context, System.EventArgs e) [0x00000] in <filename unknown>:0
at System.Web.HttpApplication+<RunHooks>c__Iterator5.MoveNext () [0x00000] in <filename unknown>:0
at System.Web.HttpApplication+<Pipeline>c__Iterator6.MoveNext () [0x00000] in <filename unknown>:0
at System.Web.HttpApplication.Tick () [0x00000] in <filename unknown>:0
I dont need to view signalr requests, so turning the diagnostics off would also solve my issue.
You can disable Glimpse for a given set of URI's in your web.config.
Take a look at the URI section of our configuration docs to see how to make the change.