Определение конфигурации решения (отладка / выпуск) при запуске шаблона T4

Большинство этих решений близко, но необходимо помнить несколько дополнительных сценариев. При работе со днями рождения и скользящей шкалой, необходимо быть в состоянии обработать переход в следующий месяц.

, Например, пример Stephens работает отлично на дни рождения вплоть до прошлых 4 дней месяца. Тогда у Вас есть логический отказ как допустимые даты, если бы сегодня было 29-м, то был бы:29, 30, И затем 1, 2, 3 из месяца NEXT, таким образом, необходимо обусловить для этого также.

альтернатива должна была бы проанализировать дату от поля дня рождения и sub в текущем году, затем сделать стандартное сравнение диапазона.

24
задан Community 23 May 2017 в 11:46
поделиться

1 ответ

Не успею я спросить, но в нижней части этой статьи MSDN я обнаружил фрагмент, который поможет мне добраться туда, где я должен быть. Ответ здесь заключается в использовании интерфейса IServiceProvider для получения Visual Studio DTE . Вот код, который делает это (заранее извиняюсь за жестко запрограммированный «Отладка»):

var serviceProvider = Host as IServiceProvider;
var dte = serviceProvider.GetService(typeof(DTE)) as DTE;
var configName = dte.Solution.SolutionBuild.ActiveConfiguration.Name ;
optimize = (configName != "Debug"); 

ОБНОВЛЕНИЕ

Этот код проверит, чтобы увидеть, в текущей конфигурации активного проекта включены оптимизации. У него все еще есть жестко закодированное имя свойства, но оно вряд ли изменится. Кроме того, использование флага оптимизации проекта имеет большой смысл для моего сценария (пытаясь решить, должен ли я включить оптимизации в своем собственном коде):

var serviceProvider = Host as IServiceProvider;
var dte = serviceProvider.GetService(typeof(EnvDTE.DTE)) as DTE;
config = dte.Solution
            .FindProjectItem(Host.TemplateFile)
            .ContainingProject
            .ConfigurationManager
            .ActiveConfiguration;
foreach(Property prop in config.Properties){
    if (prop.Name == "Optimize"){
        optimize = (bool)prop.Value;
        break;
    }
}
25
ответ дан 28 November 2019 в 23:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: