2016-01-12 1 views
1

У меня есть приложение .NET MVC 5, которое я разрабатывал в Windows некоторое время. Я хочу, чтобы мой веб-дизайнер, который использует Mac, мог запускать и редактировать приложение локально на своем Mac.System.Drawing.BitmapSuffixInSameAssemblyAttribute отсутствует в mono

Недостаточно построить Windows VM, Mono + Monodevelop/Xamarin Studio, как представляется, лучший способ достичь этого.

Когда мы впервые построили проект, мы получили an error about the System.Web.Entity.dll reference not loading. We fixed that.

Теперь, однако, мы получаем сообщение об ошибке в пространстве имен System.Drawing.

System.TypeLoadException 
Could not load type 'System.Drawing.BitmapSuffixInSameAssemblyAttribute' from assembly 'System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. 

Description: HTTP 500.Error processing request. 
Details: Non-web exception. 
Exception stack trace: 
    at (wrapper managed-to-native) System.MonoCustomAttrs:GetCustomAttributesInternal (System.Reflection.ICustomAttributeProvider,System.Type,bool) 
    at System.MonoCustomAttrs.GetCustomAttributesBase (ICustomAttributeProvider obj, System.Type attributeType, Boolean inheritedOnly) [0x00019] in /private/tmp/source-mono-mac-4.2.0-branch/bockbuild-mono-4.2.0-branch/profiles/mono-mac-xamarin/build-root/mono-4.2.1/mcs/class/corlib/System/MonoCustomAttrs.cs:128 
    at System.MonoCustomAttrs.GetCustomAttributes (ICustomAttributeProvider obj, Boolean inherit) [0x00017] in /private/tmp/source-mono-mac-4.2.0-branch/bockbuild-mono-4.2.0-branch/profiles/mono-mac-xamarin/build-root/mono-4.2.1/mcs/class/corlib/System/MonoCustomAttrs.cs:290 
    at System.Reflection.Assembly.GetCustomAttributes (Boolean inherit) [0x00000] in /private/tmp/source-mono-mac-4.2.0-branch/bockbuild-mono-4.2.0-branch/profiles/mono-mac-xamarin/build-root/mono-4.2.1/mcs/class/corlib/System.Reflection/Assembly.cs:244 
    at Owin.Loader.DefaultLoader.SearchForStartupAttribute (System.String friendlyName, IList`1 errors, System.Boolean& conflict) [0x0002c] in <filename unknown>:0 
    at Owin.Loader.DefaultLoader.GetDefaultConfiguration (System.String friendlyName, IList`1 errors) [0x0000e] in <filename unknown>:0 
    at Owin.Loader.DefaultLoader.LoadImplementation (System.String startupName, IList`1 errorDetails) [0x0001e] in <filename unknown>:0 
    at Owin.Loader.DefaultLoader.Load (System.String startupName, IList`1 errorDetails) [0x00000] in <filename unknown>:0 
    at Microsoft.Owin.Host.SystemWeb.OwinBuilder.GetAppStartup() [0x00021] in <filename unknown>:0 
    at Microsoft.Owin.Host.SystemWeb.OwinHttpModule.InitializeBlueprint() [0x0000d] in <filename unknown>:0 
    at System.Threading.LazyInitializer.EnsureInitializedCore[T] (System.Threading.T& target, System.Boolean& initialized, System.Object& syncLock, System.Func`1 valueFactory) [0x00037] in /private/tmp/source-mono-mac-4.2.0-branch/bockbuild-mono-4.2.0-branch/profiles/mono-mac-xamarin/build-root/mono-4.2.1/external/referencesource/mscorlib/system/threading/LazyInitializer.cs:241 
    at System.Threading.LazyInitializer.EnsureInitialized[T] (System.Threading.T& target, System.Boolean& initialized, System.Object& syncLock, System.Func`1 valueFactory) [0x00012] in /private/tmp/source-mono-mac-4.2.0-branch/bockbuild-mono-4.2.0-branch/profiles/mono-mac-xamarin/build-root/mono-4.2.1/external/referencesource/mscorlib/system/threading/LazyInitializer.cs:206 
    at Microsoft.Owin.Host.SystemWeb.OwinHttpModule.Init (System.Web.HttpApplication context) [0x00000] in <filename unknown>:0 
    at System.Web.HttpApplication.CreateDynamicModules() [0x00030] in /private/tmp/source-mono-mac-4.2.0-branch/bockbuild-mono-4.2.0-branch/profiles/mono-mac-xamarin/build-root/mono-4.2.1/mcs/class/System.Web/System.Web/HttpApplication.cs:1676 
    at System.Web.HttpApplication.InitOnce (Boolean full_init) [0x000ad] in /private/tmp/source-mono-mac-4.2.0-branch/bockbuild-mono-4.2.0-branch/profiles/mono-mac-xamarin/build-root/mono-4.2.1/mcs/class/System.Web/System.Web/HttpApplication.cs:218 

Я пытался уронить файл System.Drawing.dll (и связанный с ним XML-файл) из моего ящика Windows, в папку/BIN, повторное открытие проекта в Xamarin Studio, а ошибка изменен

Application Exception 
System.InvalidProgramException 
Invalid IL code in System.Drawing.BitmapSuffixInSatelliteAssemblyAttribute:.ctor(): method body is empty. 

Description: HTTP 500.Error processing request. 
Details: Non-web exception. 
Exception stack trace: 
    at (wrapper managed-to-native) System.MonoCustomAttrs:GetCustomAttributesInternal (System.Reflection.ICustomAttributeProvider,System.Type,bool) 
    at System.MonoCustomAttrs.GetCustomAttributesBase (ICustomAttributeProvider obj, System.Type attributeType, Boolean inheritedOnly) [0x00019] in /private/tmp/source-mono-mac-4.2.0-branch/bockbuild-mono-4.2.0-branch/profiles/mono-mac-xamarin/build-root/mono-4.2.1/mcs/class/corlib/System/MonoCustomAttrs.cs:128 
    at System.MonoCustomAttrs.GetCustomAttributes (ICustomAttributeProvider obj, Boolean inherit) [0x00017] in /private/tmp/source-mono-mac-4.2.0-branch/bockbuild-mono-4.2.0-branch/profiles/mono-mac-xamarin/build-root/mono-4.2.1/mcs/class/corlib/System/MonoCustomAttrs.cs:290 
    at System.Reflection.Assembly.GetCustomAttributes (Boolean inherit) [0x00000] in /private/tmp/source-mono-mac-4.2.0-branch/bockbuild-mono-4.2.0-branch/profiles/mono-mac-xamarin/build-root/mono-4.2.1/mcs/class/corlib/System.Reflection/Assembly.cs:244 
    at Owin.Loader.DefaultLoader.SearchForStartupAttribute (System.String friendlyName, IList`1 errors, System.Boolean& conflict) [0x0002c] in <filename unknown>:0 
    at Owin.Loader.DefaultLoader.GetDefaultConfiguration (System.String friendlyName, IList`1 errors) [0x0000e] in <filename unknown>:0 
    at Owin.Loader.DefaultLoader.LoadImplementation (System.String startupName, IList`1 errorDetails) [0x0001e] in <filename unknown>:0 
    at Owin.Loader.DefaultLoader.Load (System.String startupName, IList`1 errorDetails) [0x00000] in <filename unknown>:0 
    at Microsoft.Owin.Host.SystemWeb.OwinBuilder.GetAppStartup() [0x00021] in <filename unknown>:0 
    at Microsoft.Owin.Host.SystemWeb.OwinHttpModule.InitializeBlueprint() [0x0000d] in <filename unknown>:0 
    at System.Threading.LazyInitializer.EnsureInitializedCore[T] (System.Threading.T& target, System.Boolean& initialized, System.Object& syncLock, System.Func`1 valueFactory) [0x00037] in /private/tmp/source-mono-mac-4.2.0-branch/bockbuild-mono-4.2.0-branch/profiles/mono-mac-xamarin/build-root/mono-4.2.1/external/referencesource/mscorlib/system/threading/LazyInitializer.cs:241 
    at System.Threading.LazyInitializer.EnsureInitialized[T] (System.Threading.T& target, System.Boolean& initialized, System.Object& syncLock, System.Func`1 valueFactory) [0x00012] in /private/tmp/source-mono-mac-4.2.0-branch/bockbuild-mono-4.2.0-branch/profiles/mono-mac-xamarin/build-root/mono-4.2.1/external/referencesource/mscorlib/system/threading/LazyInitializer.cs:206 
    at Microsoft.Owin.Host.SystemWeb.OwinHttpModule.Init (System.Web.HttpApplication context) [0x00000] in <filename unknown>:0 
    at System.Web.HttpApplication.CreateDynamicModules() [0x00030] in /private/tmp/source-mono-mac-4.2.0-branch/bockbuild-mono-4.2.0-branch/profiles/mono-mac-xamarin/build-root/mono-4.2.1/mcs/class/System.Web/System.Web/HttpApplication.cs:1676 
    at System.Web.HttpApplication.InitOnce (Boolean full_init) [0x000ad] in /private/tmp/source-mono-mac-4.2.0-branch/bockbuild-mono-4.2.0-branch/profiles/mono-mac-xamarin/build-root/mono-4.2.1/mcs/class/System.Web/System.Web/HttpApplication.cs:218 
Version Information: 4.2.1 (explicit/6dd2d0d Fri Nov 6 12:25:19 EST 2015); ASP.NET Version: 4.0.30319.17020 

Как мой дизайнер может запустить это приложение .NET MVC 5 на своем Mac?

+0

Почему вы должны использовать System.Drawing? можете ли вы отбросить ссылку на эту библиотеку в своем исходном проекте в Visual Studio? – knocte

+0

Что бы ни ссылалось на System.Drawing, это путь, глубоко внутри среды .NET MVC. Я не называю это явно в своем приложении, и у меня нет ссылки изначально. Итак, да, я предполагаю, что мне это нужно. Если я правильно читаю трассировку стека, это моно в конечном итоге делает вызов. – jonnybot

+0

Звонок, вероятно, похоронили в промежуточном программном обеспечении Owin. Трудно сказать из Exception, где выполняется вызов/требование для System.Drawing. – jonnybot

ответ

1

Я реализовал заглушки для отсутствующих типов в BCL Mono и предложил a pull request.

Как уже было принято и объединено, эта проблема должна быть исправлена ​​в v.NEXT версии Mono (скорее всего, она называется 4.4).

+1

Ура для с открытым исходным кодом! – jonnybot