codefile против codebehind

<p>в чем разница между <strong>codefile</strong>= "file.ascx.cs" и <strong>codebehind</strong>= "file.ascx.cs" в объявлении пользовательского элемента управления asp.net?</p><p>один новее или рекомендуется? или у них есть конкретное использование?</p>

<p><strong>codebehind</strong>: требуется компиляция (модель asp.net 1.1). скомпилированный бинарный файл находится в папке bin сайта. вам необходимо выполнить компиляцию в visual studio перед развертыванием. это хорошая модель, когда вы не хотите, чтобы исходный код отображался как обычный текст. например, при доставке клиенту, которому вы не обязаны предоставлять код.</p><p><strong>codefile</strong>: вы предоставляете исходный файл вместе с решением для развертывания. среда выполнения asp.net 2.0 компилирует код при необходимости. скомпилированные файлы находятся в microsoft.net [версия .net]\temporary asp.net files.</p>

<p>я работаю с проектом приложения в visual studio express 2012 для web и использую .net 4.0. в коде, лежащем в основе файлов для страниц входа в систему и смены пароля, я обнаружил ситуацию, когда в объявлении мне потребовались и codebehind, и codefile.</p><p>если я не добавлю ссылку на файл кода, например</p><pre><code>codefile=login.aspx.cs </code></pre><p>веб-страница не анализируется, и браузер отображает ошибку синтаксического анализатора. неважно, собираю я проект или нет.</p><p>если я не добавлю код за ссылкой, как</p><pre><code>codebehind=login.aspx.cs </code></pre><p>ссылки на классы безопасности, такие как membershipuser, терпят неудачу как во время компиляции, так и при попытке использовать intellisense с ошибкой типа "не удается найти тип или пространство имен membershipuser". я добавил ссылку на system.web.applicationservices, как того требует платформа .net 4.0.</p><p>я должен добавить, что эти проблемные файлы выполняются в приложении на веб-сайте, созданном с помощью инструмента приложения iis. когда я открываю сайт из visual studio, у меня нет проблем с ошибками синтаксического анализатора или ссылочными ошибками. эта путаница возникает только тогда, когда я открываю приложение как проект в visual studio.</p>

<p>файл codebehind нужно скомпилировать перед запуском, но в src нам не нужно компилировать, а затем запускать ... просто сохраните файл.</p>