Я провел несколько дней, пытаясь найти решение этой проблемы. Это был ответ.

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. И, конечно же, это все еще не удается. Например, этот простой тип из проекта netstandard:

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 с нетерпением ожидалась мной и многими другими, когда было сказано, что в течение некоторого времени она решит многие болевые точки, но, к сожалению, она представила свой собственный наборбесконечные длл ад проблемыили увидетьВот, или здесь, или здесь, Смотрите, например, обсужденияSystem.Net.Http (и обязательные перенаправления не просто удаляют все предупреждения о конфликтах, они часто вызывают свои собственные, очень болезненные вещи). Теперь некоторые надеются, что 4.7.2 решит все эти проблемы, хотя это не решило эти проблемы ASP.NET MVC 5 для меня)

Ответы на вопрос(1)

Ваш ответ на вопрос