2017-02-02 5 views
2

У меня есть проект, который по разным причинам имеет несколько контроллеров и представлений, которые по сути одинаковы. В настоящий момент они дублируются между проектами, поэтому в каждом проекте имеется по нескольку копий. Мне было интересно, если бы все это было включено в отдельный проект (например, проект библиотеки классов) и изменить возможности View Locator (IViewLocationExpander?) Или некоторые другие способы заставить его посмотреть в другом проекте для этих представлений.Доля представлений (.cshtml файлов) между проектами в решении ядра asp.net

Я знаю, что это было возможно в «полном» asp.net с небольшим взломом, и это никогда не было очень чистым или элегантным, поэтому задавался вопросом, есть ли лучший способ с ядром asp.net?

Благодаря

ответ

1

Вы можете создать библиотеку AspNetCore класса и использовать AspNetCore Precompiled Views. Также как указано в этом StackOverflow answer. Это должно позволить вам компилировать и совместно использовать контроллеры и представления по своему усмотрению. Представления (.cshtml-файлы) больше не нужно будет развертывать, поскольку они будут компилироваться и доступны в этой библиотеке классов.

Затем добавьте ссылку на этот проект библиотеки классов (если в том же решении) или создайте его как пакет Nuget и добавьте его в другие проекты. (Это может быть сделано с помощью частного сервера Nuget или локальной папки репозитория Nuget).

+0

Спасибо. Я следил за приведенными выше ссылками и добавил инструменты/зависимости к project.json. Я также добавил бритву-прекомпиляцию как сценарий postbuild, но теперь представление больше не существует в проекте, а в общей DLL, оно все еще не радует. Говорить, что он не может найти вид в обычных местах поиска. Как я могу ссылаться на представление в общей (ссылочной) сборке? – LDJ

+0

Вы пытались добавить пространство имен совместно используемой библиотеки в _ViewStart.cshtml (или _ViewImports.cshtml)? @using Your.Namespace – truemedia

+0

Да, он до сих пор их не находит. Когда я прекомпилирую их, хотя он создает .precompiled.dll, который я не могу ссылаться, только LDJ

Смежные вопросы