[Из песочницы] Боевое применение компилятора C# для WEB Forms
Случаются времена, когда для компиляции сборки или приложения Visual Studio использовать не представляется возможным. Звучит это дико, но все-таки иногда случается. Например, необходима компиляция DLL из конфигуратора самописной SCADA-системы. Данный вопрос можно решить использованием класса CSharpCodeProvider. Но мы копнем глубже и создадим WEB Forms приложение без использования Visual Studio. Нашим основным инструментом станет csc.exe. Компилятор, поставляемый вместе с .NET Framework. Матерые программисты пустят скупую слезу, вспомнив свои первые шаги в .NET, а начинающим будет полезно увидеть метод применения компилятора и построение класса WEB Forms приложения. Итак, начнем…Приготовления и структура нашего мини-проектаДля начала определимся с функционалом, который мы хотим. Мы хотим WEB Forms приложение, содержащее одну форму default.aspx и которое выводит сообщение «Это работает» в метку на странице.Структура проекта %root%\deploy\bin\ default.aspx web.config source\ default.aspx.cs deploy.rsp deploy.bat default.aspx Ниже приведен код разметки: <%@ Page Language="C#" AutoEventWireup="false" Inherits="WForms_ByHands.MyPage" %>
namespace WForms_ByHands { public partial class MyPage: System.Web.UI.Page { protected global: System.Web.UI.HtmlControls.HtmlForm myForm; protected global: System.Web.UI.WebControls.Label testLabel; public MyPage () { this.LoadComplete += Page_Load; } protected void Page_Load (object Sender, EventArgs e) { this.testLabel.Text = «Это работает!»; } } }
Мы объявляем класс страницы нашего приложения как WForms_ByHands.MyPage. Этот класс должен быть указан в атрибуте «Inherits» нашей формы. Этот класс будет загружен при обращении к нашей форме. Так как атрибут «AutoEventWireup» имеет значение «false», мы должны в конструкторе явным образом указывать процедуры-обработчики событий. Для примера выбрано событие «LoadComplete» — полная загрузка всех элементов страницы.Компиляция
Чтобы скомпилировать наше приложение, можем записать все параметры сразу в командную строку, но воспользуемся ответным файлом. Ответный файл может содержать все параметры компилятора и являться единственным параметром в командной строке для csc.exe. Ниже приведен код ответного файла:
/reference: System.Web.dll /*ссылка на сборку, содержащую классы System.Web.UI.HtmlControls.HtmlForm и System.Web.UI.WebControls.Label */
/target: library
/out:%root%\deploy\bin\WForms_Handly.dll
%root%\source\default.aspx.cs
Также в директорию %root%\deploy необходимо добавить web.config c минимально требуемым кодом: