Используя VS2015 и MVC 5.2.3, я пытаюсь переместить области функциональности, включая представления Razor, в библиотеки классов, чтобы я мог делиться ими между несколькими проектами.
Я использую средство MvcBuildViews, как обычно описано, и настраиваю его следующим образом, так как оно часто выявляет опечатки перед публикацией:
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)" />
</Target>
Это прекрасно работает с самим основным проектом, но у меня возникли проблемы с его работой с библиотеками. Вместо этого я получаю следующую ошибку компилятора:
web.config(41): ошибка ASPCONFIG: не удалось загрузить файл или сборку «System.Web.Mvc, версия = 5.2.3.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35» или одну из ее зависимостей. Система не может найти указанный файл.
Упомянутый раздел web.config выглядит следующим образом:
<system.web>
<compilation>
<assemblies>
<add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
</compilation>
<httpRuntime targetFramework="4.6"/>
</system.web>
Все настройки выглядят очень похоже на основной проект, и эксперименты оказались бесплодными и продолжают возвращать меня к той же основной ошибке, описанной выше. Все необходимые ссылки установлены и такие же, как для основного проекта.
Я понимаю, что тег AspNetCompiler в csproj является оболочкой для процесса aspnet_compiler.exe, но я не вижу различий в среде компиляции в библиотеке классов по сравнению с основным проектом.
Можно ли в этом теге передать компилятору конкретную папку поиска сборки? - поскольку сборка System.Web.Mvc.dll определенно существует в папке bin\Release проекта библиотеки классов. Или есть лучший подход?
Подробная информация о внутренних процессах aspnet_compiler.exe скудна, и, похоже, он не имеет подробного режима диагностики.
Как мне поступить с этим?