Ответ 1
Это относится к проектам Web Application
в отличие от проектов Web Site
, которые по умолчанию CodeFile
, и не позволяют изменять действие сборки...
В ASP.NET Web Applications
у вас есть два метода развертывания ваших страниц; CodeFile
и CodeBehind
. По умолчанию страницы всегда будут использовать CodeBehind
, но вы можете изменить это.
CodeBehind
CodeBehind компилирует ваш .cs файл в DLL файл в папку bin
при компиляции/время сборки, а затем вы развертываете его на своем веб-сервере. Нет необходимости разворачивать файл .cs на ваш веб-сервер. Если вы это сделаете, он просто сидит там, пока не будет использован.
Чтобы настроить страницу с помощью CodeBehind, убедитесь, что:
- Директива страницы в вашем файле
.aspx
имеетCodeBehind="your.aspx.cs"
- Свойства файлов
.cs
и.designer.cs
в проводнике решений имеютbuild-action
compile
.
CodeFile
Это заставляет ASP.NET компилировать файл .cs на лету на сервере. Это означает, что ваш файл .cs
необходимо развернуть на веб-сервере. Это также означает, что ваш файл .cs
не будет скомпилирован в момент компиляции/сборки и поэтому не будет встроен в ваш .dll
в папке bin
.
Основное преимущество
С CodeFile вы можете внести изменения в файл .cs
и развернуть только этот файл, чтобы увидеть изменения на вашем веб-сервере производства. Нет необходимости повторно развертывать. Не нужно перерабатывать пул приложений. Это может быть очень полезно во многих ситуациях.
Чтобы настроить страницу с помощью CodeFile, убедитесь, что выполнено все из следующих элементов:
- Директива страницы в файле
.aspx
имеетCodeFile="your.aspx.cs"
- Свойства файла
.cs
в проводнике решений имеютbuild-action
content
- Свойства файла
.designer.cs
в проводнике решений имеютbuild-action
none
.
Примечания
- Intellisense не любит работать, когда страницы настроены с помощью CodeFile (вы можете изменить CodeBehind во время кодирования, а затем изменить его для развертывания).
- Если вы изменили код CodeBehind на CodeFile, то всегда выполните
перестроить и повторно развернуть (и наоборот). Это происходит потому, что, когда страница была CodeBehind,
.cs
был скомпилирован в.dll
в папке bin и будет оставайтесь там, когда вы переходите на CodeFile. CodeFile будет скомпилированные на лету, и вы получите тот же код/классы, определенный в.dll
и в компилированном коде "на лету", что приведет к ошибки времени выполнения.