MSBuild — какая задача сигнализирует о запуске генератора кода

Я хочу, чтобы задача MSBuild запускалась после создания файлов Designer.cs (но до фактической компиляции C#). Некоторые инструменты Visual Studio по-прежнему не помещают заголовки в свои общедоступные элементы, и эти элементы удаляются во время компиляции и маскируют другие, более серьезные проблемы. Я создаю пакет, который будет вставлять операторы #pragma в файлы конструктора, чтобы они не выдавали бесполезные предупреждения. У меня есть цель, которая выглядит так:

<Target AfterTargets="???????"
                BeforeTargets="CoreCompile"
                Name="BuildTask">
    <IgnoreGeneratedFilesBuildTask IntermediateOutputPath="$(IntermediateOutputPath)"
                               ProjectPath="$(ProjectDir)"/>

But I don't know what to put in the 'AfterTargets' in order to run the task at the right time.


person Quarkly    schedule 21.08.2015    source источник
comment
Возможно, это должен быть пакет расширения (VSIX), а не задача MSBuild. Visual Studio создает файлы .Designer внутри вне MSBuild. По крайней мере, это то, к чему, я думаю, ты клонишь. Файлы генерируются повторно каждый раз, когда дизайнер изменяется и сохраняется, поэтому ваша задача должна запускаться с привязкой к файлу/сохранению для конкретного дизайнера и запускаться после генерации кода, но до закрытия дизайнера. Это сильно отличается от VS2015 с Rosyln.   -  person Ron Beyer    schedule 22.08.2015
comment
Под разными я подразумеваю то, как код компилируется, а не генерируется.   -  person Ron Beyer    schedule 22.08.2015
comment
Я полагаю, это имеет смысл. Реальное решение — переписать SettingsSingleFileGenerator так, чтобы он генерировал код, пропускающий ошибки CS1592. Я не в этом, но у меня есть кое-что, что может написать быстрый набор операторов #pragma до компиляции кода *.Designer.cs. Очень жаль.   -  person Quarkly    schedule 22.08.2015
comment
@RonBeyer - ссылка не очень полезна. Отключение предупреждений для всего проекта не является идеей, поскольку они очень полезны в написанном пользователем коде. Хитрость здесь заключается в том, чтобы отключить его только для автоматически сгенерированного кода.   -  person Quarkly    schedule 22.08.2015
comment
Вы уверены, что пытаетесь подавить CS1592? То есть для искаженного тега XML-документа с элементом <include> в нем я никогда не видел автоматически сгенерированную документацию с этим тегом? Это только для файлов настроек? Вы работаете над VS2008?   -  person Ron Beyer    schedule 22.08.2015
comment
@RonBeyer - они генерируются в VS2015, когда файлы настроек становятся общедоступными. Вместо того, чтобы пытаться поставить телегу впереди лошади, я сделал файл настроек «внутренним» и выставил нужные мне настройки через общедоступный класс. Не идеально, но больше работы, чем должно было быть. Кстати, у нас снова возникла та же проблема с созданием кода XAML для Windows 8.1.   -  person Quarkly    schedule 22.08.2015