Я предполагаю, что вы создали проект веб-приложения, а не проект веб-сайта. Папка App_Code в приложении ASP.NET является особенной. Он предназначен для того, чтобы вы могли вставить код, чтобы он был скомпилирован с веб-сайтом. Из-за этого элементы проекта помечаются как «Нет», чтобы они не компилировались Visual Studio. Когда вы публикуете проект веб-сайта в вашей размещенной среде, сами файлы кода копируются в папку App_Code, и это компилируется в отдельную сборку во время выполнения ASP.NET.
Теперь, когда вы создаете веб-приложение MVC, вы должны помнить, что это не тот же тип проекта, что и у проекта веб-сайта. Веб-приложение MVC будет компилироваться локально в сборку в каталоге / bin. Если вы добавите в свой проект папку App_Code с вашим кодом и измените тип сборки на Compile, у вас возникнут проблемы, потому что:
- Ваше приложение MVC скомпилировано и содержит тип MyExtensions.Foo и,
- ASP.NET компилирует папку App_Code, которая также имеет тип MyExtensions.Foo.
Моя рекомендация - избегать использования App_Code. Я не склонен, поскольку я предпочитаю более краткую структуру проекта. Используйте папку Models для кода или создайте другие папки .....
Если вы действительно хотите использовать папку App_Code, может быть лучше пометить действие сборки любого из файлов как «Содержимое», чтобы гарантировать, что они будут скопированы в выходной каталог при публикации вашего сайта.