Динамическая компиляция приложений ASP.NET - PullRequest
0 голосов
/ 01 августа 2010

Мое веб-приложение (ASP.NET v3.5 / C #) динамически создает другие приложения asp.net (создает aspx, aspx.cs, классы, web.config, файл project.csproj и т. Д.).

Дело даже в том, что после того, как я настроил «новую» папку приложения как ПРИЛОЖЕНИЕ в IIS, при попытке просмотреть ее я получаю следующую ошибку синтаксического анализатора: Could not load type 'Template48.Template48' (где Template48 - мое приложение).

Когда я вручную перехожу к новой папке приложения и перестраиваю ее, все отлично работает.

Как мне перекомпилировать это ВСЕ приложение, но в его папке?

Спасибо зазаранее,

Гал.

1 Ответ

1 голос
/ 01 августа 2010

Веб-приложение должно быть скомпилировано, прежде чем оно заработает; это отличается от веб-сайта.

Недостаточно просто указать источники; на самом деле ASP.NET не нужны источники (aspx.cs) для запуска приложения, только файлы .aspx, web.config и .dll («сборки» в .NET lingo). Даже считается хорошей практикой удалять источники из производственной системы, чтобы избежать случайной утечки источников и предоставления злоумышленникам информации о внутренней работе сайта.

Чтобы это работало, вам нужно как-то вызвать компилятор командной строки C #, чтобы построить проект на лету; это сгенерирует необходимые DLL-файлы.

Другим, но гораздо более сложным маршрутом было бы использование возможности .NET для генерации IL во время выполнения; используя эту возможность, вы можете создавать сборки напрямую, не обращаясь к компилятору. Это довольно сложно, и вам нужно полное понимание IL, чтобы осуществить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...