#c# #.net #asp.net-mvc #asp.net-core #.net-4.0
#c# #.net #asp.net-mvc #asp.net-core #.net-4.0
Вопрос:
Нам нужно понизить рейтинг проекта MVC с .netcore до .netframework. По этому вопросу я изменил все файлы *.csproj и заменил
<TargetFramework>netcoreapp2.1</TargetFramework>
with
<TargetFramework>net461</TargetFramework>.
когда я запускаю проект, я не вижу никакой ошибки, но при вызове любого из API я получаю следующее исключение:
Exception from request 'GET /launch'. Response status code is 500 InternalServerError. Exception: System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
at System.Reflection.RuntimeAssembly.get_DefinedTypes()
at Microsoft.AspNetCore.Mvc.Controllers.ControllerFeatureProvider.PopulateFeature(IEnumerable`1 parts, ControllerFeature feature)
at Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartManager.PopulateFeature[TFeature](TFeature feature)
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionDescriptorProvider.GetControllerTypes()
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionDescriptorProvider.BuildModel()
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionDescriptorProvider.GetDescriptors()
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionDescriptorProvider.OnProvidersExecuting(ActionDescriptorProviderContext context)
at Microsoft.AspNetCore.Mvc.Internal.ActionDescriptorCollectionProvider.UpdateCollection()
at Microsoft.AspNetCore.Mvc.Internal.ActionDescriptorCollectionProvider.get_ActionDescriptors()
at Microsoft.AspNetCore.Mvc.Internal.AttributeRoute.GetTreeRouter()
at Microsoft.AspNetCore.Mvc.Internal.AttributeRoute.RouteAsync(RouteContext context)
at Microsoft.AspNetCore.Routing.RouteCollection.<RouteAsync>d__10.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.AspNetCore.Builder.RouterMiddleware.<Invoke>d__4.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.<Invoke>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Ipi.Common.AspNetCore.FaultHandlingMiddleware.<Invoke>d__1.MoveNext()
Я считаю, что отсутствует сборка, но не знаю, где и как получить версию сборки, которая вызывает проблему.
Комментарии:
1. Я даже не уверен, что это возможно… Net Core — это не то же самое, что Net Framework
2. Это не «понижение». Это полное переключение фреймворков. Вы не можете просто заменить целевую платформу — структуры проекта, код запуска и всевозможные другие вещи полностью отличаются между .NET Framework и .NET Core. Лучше создать новый проект, а затем перенести любой код, который вы можете перенести в новый проект, и переписать все, что зависит от платформы.
3. P.S. Но зачем вам это нужно делать? Это необычная проблема. Возможно, вам следует подумать об устранении основной причины этого требования, а не пытаться переносить код из новой платформы в более старую.
4. Вы убедились, что все ваши зависимости имеют эквивалент .net Framework? Можете ли вы выполнить восстановление dotnet, и оно будет успешным? Я полностью согласен с ADyson, вы не «понижаете рейтинг», а полностью меняете платформы, и я не могу представить причину, по которой вам это нужно или вы хотите это сделать.