Проблема прекомпиляции MVC3 .Net в IIS 6
У меня есть веб-приложение MVC3 C# .Net, и я выполняю aspnet_compiler в своем приложении для предварительной компиляции. Я запускаю эту команду:
aspnet_compiler -v /dev/boe
Boe - это приложение в структуре dev под "Default Web Site". Приведенная выше команда выдает эту ошибку.
c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\dev_boe\25d5f53a\2ad742fc\App_Web_vujir5mm.0.cs(29): error CS0234: The type or namespace name 'Models' does not exist in the namespace 'BOE' (are you missing an assembly reference?)
c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\dev_boe\25d5f53a\2ad742fc\App_Web_vujir5mm.2.cs(29): error CS0234: The type or namespace name 'Models' does not exist in the namespace 'BOE' (are you missing an assembly reference?)
c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\dev_boe\25d5f53a\2ad742fc\App_Web_vujir5mm.3.cs(29): error CS0234: The type or namespace name 'Models' does not exist in the namespace 'BOE' (are you missing an assembly reference?)
Тем не менее, модели не в нашем решении. У нас есть объекты Model в проекте Domain, на который ссылается наше веб-приложение. Похоже, что компилятор ожидает ссылку Models в нашем приложении MVC. Это правда? Или что-то еще вызывает эту ошибку?
2 ответа
У меня была похожая ошибка при попытке использовать движок Razor на IIS 7.5 (даже если был установлен.NET 4!)
Если у вас есть ссылка в вашем проекте, так как вы предлагаете перейти к ссылкам, выделить их, перейти к свойствам и в разделе "Копировать локально" установить для этого параметра значение true. Переиздайте и, надеюсь, это решит вашу проблему так же, как и мою.
Благодаря предложению Дэвида Херста взглянуть на строку кода во временном файле я обнаружил проблему:
По сути, были файлы, которые не были включены в решение Visual Studio, НО все еще находились в файловой структуре на моем компьютере. Было 3 файла.cshtml, ссылающихся на модели. Поскольку файлы не были включены в решение, они не были включены в сборку с использованием VS. А также, поскольку они не были в решении, когда я выполнял поиск Моделей, я не получил никаких результатов... но компилятор просматривает всю структуру каталогов и поэтому попытался скомпилировать файлы с неверными ссылками.
Отличный урок в том, чтобы быть уверенным в том, что нужно удалить устаревший код и убедиться, что база кода и файловые структуры находятся в snyc.