Я хотел бы узнать, какую версию брандмауэра С# использует для компиляции моих шаблонов cshtml. Причина, по которой я хочу этого, - это нарушение.
У нас была lambda в заявлении foreach, которое отлично работало на наших локальных машинах dev, но вызвало ошибку в нашей тестовой среде (в которой нет С# 5). Эта ошибка была очень сложной для отладки (мы даже скопировали все DLL и базы данных тестовой среды и все еще не смогли воспроизвести ошибку).
Итак, чтобы предотвратить эту разницу dev/test в будущем, я хотел бы знать, есть ли способ указать версию С#, которую бритва должна использовать для компиляции файлов cshtml. Было бы неплохо, если бы я мог проверить версию С#, которую использует бритва (путем ее печати).
Обновление: по запросу более подробная информация о том, как это произошло.
Мы используем сетку mvc devexpress для отображения данных в наших режимах бритвы. Чтобы добавить столбцы динамическим способом, мы зацикливаем (foreach) список, который вставляет столбцы в datagrid (используя лямбда). Упрощенный пример:
@Html.DevExpress().GridView(
settings =>
{
settings.Name = "gvDashboard";
//Some more settings
settings.Columns.Add(column =>
{
column.FieldName = Model.DashboardItems.PropertyName(p => p.Id);
column.Caption = "Id";
//Some more column settings
});
foreach (var extraColumnLoopVar in Model.ExtraColumns)
{
//We added this to solve the problem
var extraColumn = extraColumnLoopVar;
settings.Columns.Add(column =>
{
column.Caption = extraColumn.Name;
//Some more column settings
column.SetDataItemTemplateContent(content =>
{
Html.ViewContext.Writer.Write(extraColumn.MyValue);
});
});
}
});