Пакеты NuGet и папка bin на веб-страницах ASP.NET

Это, вероятно, очень простой вопрос, но , что механизм DLL файлов в папке packages можно скопировать в папку bin?

В качестве примера у меня есть решение, содержащее один "проект" (node) веб-сайта типа (т.е. no csproj, только на основе файловой системы). Это очень простой статический веб-сайт. Я хочу добавить поддержку веб-страниц ASP.NET, поэтому я устанавливаю этот пакет NuGet, и теперь есть несколько DLL файлов в папке packages, а мой web.config обновлен. Однако, когда я запускаю сайт, он показывает YSOD с ошибкой "Невозможно определить, какую версию веб-страниц ASP.NET использовать", которая, я думаю, связана с тем, что в ней нет папки bin с DLL (когда я создаю Сайт "Razor" с нуля в Visual Studio, там находится папка bin). Если я попытаюсь перестроить решение, он не с той же ошибкой, которая является ошибкой компиляции (а не ошибкой времени выполнения).

Какую команду или механизм восстановить папку bin из папки packages? Я не хочу иметь библиотеки DLL в своем исходном элементе управления, и, согласно документам NuGet, кажется, что этот рабочий процесс очень поддерживается. Я предполагаю, что если бы это был проект на основе csproj, было бы какое-то действие MS Build или что-то подобное, чтобы использовать DLL из папки packages, но это веб-сайт, и я не могу определить расширенные действия сборки, могу ли я?

Ответ 1

Используя Visual Studio 2013, когда я устанавливаю пакет NuGet, такой как Microsoft.AspNet.Razor, в приложение веб-страниц ASP.NET, создается папка bin.

Получение двоичных файлов в папку bin является частью процесса сборки, и это не выполняется NuGet. NuGet можно использовать для восстановления файлов в папке пакетов, но при восстановлении ничего не будет делать с вашей папкой bin.

Для создания и восстановления пакетов для работы вам кажется, что вам нужно сохранить папку bin и любые файлы .refresh. Вы можете удалить другие двоичные файлы из вашей системы управления версиями.

System.Web.Razor.dll.refresh

Содержимое этого файла сообщает Visual Studio, где можно найти пакеты NuGet:

 ..\..\Projects\MyWebSite\packages\Microsoft.AspNet.Razor.3.1.2\lib\net45\System.Web.Razor.dll

Чтобы проверить это, я удалил все двоичные файлы из папки bin, удалил папку с пакетами, а затем перестроил проект. Visual Studio восстанавливает пакеты и создает копии необходимых сборок в папке bin проекта.