Я работаю над веб-сайтом, который я бы хотел использовать для компиляции на месте, чтобы сделать первый клик быстрее. Я хотел бы использовать метод ClientBuildManager
. CompileFile
, чтобы сделать компиляцию на месте так что я могу контролировать процесс компиляции. По целому ряду причин это идеальный способ скомпилировать этот сайт.
Почему IIS создается в другом подкаталоге в разделе "Временные файлы ASP.NET" ?
Когда я скомпилирую файл сайта с помощью ClientBuildManager
. CompileFile
в exe для этой цели, выход переходит в подкаталог в разделе "Временные файлы ASP.NET" . Однако, когда сайт попадает позже, IIS перестраивает элементы управления под другим подкаталогом в разделе "Временные файлы ASP.NET" , что делает предыдущую компиляцию на месте бесполезной.
Примечание. Сборки, созданные во время компиляции на месте в разделе "Временные файлы ASP.NET" , остаются в силе (все еще существуют).
Примечание. Как папка сборок сборки на месте, так и папка сгенерированных сборок IIS находятся под одним и тем же файлом "Временные файлы ASP.NET" .
Пример:
- C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Временные файлы ASP.NET\root\2ba591b9\[ имя папки компиляции на месте]
- C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Временные файлы ASP.NET\root\2ba591b9\[ Созданные IIS сборки для веб-сайта]\
ClientBuildManager
. CompileFile
Конфигурация
var buildParameter = new ClientBuildManagerParameter
{
PrecompilationFlags = PrecompilationFlags.Default,
};
var clientBuildManager = new ClientBuildManager(
RootVirtualPath, RootPhysicalPath, null, buildParameter);
...
clientBuildManager.CompileFile(relativeVirtualPath, callback);
Где RootVirtualPath
просто "для веб-сайта по умолчанию. RootPhysicalPath
указывает на местоположение на диске веб-сайта. relativeVirtualPath
имеет вид" ~/myFile.aspx". Обратный вызов используется для отслеживания прогресса.