.NET 4.7.1 должен был решить проблемы, с которыми мы столкнулись при обращении к библиотекам netstandard 2.0
из полного фреймворка. В некотором роде, несмотря на некоторые продолжающиеся и болезненные предупреждения о конфликтах DLL и связанные с этим проблемы, а также на необходимость вручную обновлять PackageReferences ( см. Это замечательное расширение ). Тем не менее, можно заставить его работать, хотя см. Примечание 1 ниже, и, если я могу сказать: к сожалению, мягко говоря, не было никакой помощи VStudio или большого руководства по этому и смежным вопросам, до сих пор нужно найти такое помощь по тыловым каналам на github. Сама эта проблема в идеале была бы сообщена: ASP.NET MVC 5 пока не поддерживает стандарт netstandard в бритве ... хотелось бы, чтобы они просто сообщили нам об этом, если это правда! Сэкономит бесконечные потраченные впустую часы! Но так ли это? Или есть исправление?
Здесь возникает проблема с проектами ASP.NET MVC 5 (даже с проектами, нацеленными на 4.7.1). Хотя простой код .cs работает, в том числе в контроллерах, это , а не верно для любого кода в представлении бритвы (.cshtml
файлы). Любые типы, на которые ссылаются бритвенные представления, полученные из библиотеки netstandard
, полностью терпят неудачу.
Чтобы воспроизвести эту проблему и убедиться, что это был не только мой собственный код, я воспроизвел этот , создав новый проект ASP.NET MVC 5 (на github) в новейшей версии VStudio 2017 (даже в версии Preview, 15.7.0 Preview 4.0), затем создаю новый проект netstandard
, содержащий всего пару типов, поэтому я мог бы попрактиковаться ссылаться на эти типы на страницах просмотра MVC 5. И, конечно же, это все еще не удается. Например, этот простой тип из нестандартного проекта:
public enum AnimalType { Cat, Dog, Zebra, Alligator }
Если вы сделаете это перечисление типом в вашей модели представления, переданным на страницу, если вы когда-нибудь будете ссылаться на это свойство на странице бритвы, вы получите ошибки времени компиляции, а также во время выполнения, говоря:
Тип Enum определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку 'netstandard, Version = 2.0.0.0, Culture = нейтральный, PublicKeyToken = cc7b13ffcd2ddd51'. AspMvc5WebApp471
Как подробно описано в этом репо, я даже пытался перекомпилировать свою собственную версию Microsoft.CodeDom.Providers.DotNetCompilerPlatform
, чтобы сослаться на нее в web.config
, но это не решило проблему.
Так что было бы приятно услышать от команды ASP.NET или кого-то еще, кто может знать, как решить эту проблему, что может повлечь за собой это исправление. Или, если ASP.NET MVC 5 просто еще не работает с netstandard
, было бы неплохо узнать, является ли это сообщением, и если поддержка netstandard
может появиться в ASP.NET MVC 5 в ближайшем будущем, или если это где-то на дорожной карте? И, возможно, что именно вызывает эту неудачу? Конечно, было бы радостно услышать, есть ли исправление, которое можно применить сразу, но в любом случае, мы должны знать, иначе netstandard
в основном бесполезно для тех из нас, кто не может просто сбросить ASP.NET MVC 5 в день (сколько бы мы ни хотели в реальном мире ...) Очень ценится.
(Примечание 1: Net Framework 4.7.1 с нетерпением ожидалась мной и многими другими, когда было сказано, что в течение некоторого времени она решит многие болевые точки, но, к сожалению, она представила свой собственный набор бесконечные dll, черт возьми, проблемы , или см. здесь , или здесь , или здесь . См., например, обсуждения по System.Net.Http
(и перенаправления привязки не просто удаляйте все предупреждения о конфликтах, они часто вызывают свои собственные, очень болезненные вещи). Теперь некоторые надеялись, что 4.7.2 решит все эти проблемы, хотя и не решит эти проблемы ASP.NET MVC 5 для я)