У меня есть приложение .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?
Почему вы должны использовать System.Drawing? можете ли вы отбросить ссылку на эту библиотеку в своем исходном проекте в Visual Studio? – knocte
Что бы ни ссылалось на System.Drawing, это путь, глубоко внутри среды .NET MVC. Я не называю это явно в своем приложении, и у меня нет ссылки изначально. Итак, да, я предполагаю, что мне это нужно. Если я правильно читаю трассировку стека, это моно в конечном итоге делает вызов. – jonnybot
Звонок, вероятно, похоронили в промежуточном программном обеспечении Owin. Трудно сказать из Exception, где выполняется вызов/требование для System.Drawing. – jonnybot