Подключаем исходный код ASP.NET MVC 4 к своему проекту

В данной статье я покажу, как подключить исходный код ASP.NET MVC 4 в свой проект, созданный в Visual Studio 2012. Ничего сложного в этом нет, хотя всё и не настолько просто, как было с MVC 3. Это бывает нужно, например, в целях изучения и более глубокого понимания устройства платформы. А так же очень полезно читать чужой код в целях самообучения и саморазвития. Ну и с чисто практической точки зрения, данная возможность нужна, когда нам кажется, что результат работы не тот, который нам нужен, ведь в MVC многое базируется на обычных соглашениях. И порой хочется взглянуть под капот, и понять, почему данный код работает именно так, а не иначе. Хотя можно обойтись и без подключения исходных кодов, для входа в него во время отладки, как показал тут. Но основная мощь заключается в том, что мы можем модифицировать его в своих целях, если что-то не нравится или не устраивает нас. И так приступим. Идём сюда и загружаем исходный код.



Он весит порядка 4 МБ в запакованном виде. Распаковываем его. Но перед тем как скомпилировать проект нужно загрузить пакеты NuGet, так как они не поставляются вместе с исходным кодом. Для этого запускаем следующую комманду:

>C:\Users\Yatajga\Desktop\aspnetwebstack-75b5e7ea58d2\build RestorePackages

естественно имя и путь на вашей машине будет другим. Ждём завершения загрузки.



Открываем решение Runtime.sln, которое находится в распакованной папке.



Далее, добавляем новый проект MVC 4 в решение.



Удаляем все установленные пакеты NuGet (MVC 4 тоже устанавливается как таковой). Хотя можно и не все, а только те сборки которые хотим заменить.



Добавляем ссылки на сборки из исходного кода.



Запускаем коммандную строку от имени администратора. Регистрируем все сборки с требуемым нам ключём (31bf3856ad364e35), для пропуска проверки. Для этого вводим и выполняем следующую комманду:

>sn.exe -Vr *,31BF3856AD364E35



Далее идём и заменяем версии сборок. В одном из файлов CommonAssemblyInfo.cs с исходными кодами, меняем 4.0.0.0 на 4.0.0.1. Можно этого не делать, показываю чисто для наглядности.



И ещё в файлах web.config.



Всё готово. Добавляем простой контроллер Home и представление Index. Ставим точку останова, например в AsyncControllerActionInvoker. Запускаем проект в режиме отладки



и видим, что всё работает. А если Вам нужно подключить исходный код не в свой проект, а просто поэкспериментировать, то вот уже готовый проект.