Используя DSL, чтобы сгенерировать Код C#

Я совершенно уверен, что это проблема политики доступа.

Перейдите в «Настройки проекта DevOps» - «Конвейеры - Сервисные подключения» и нажмите «Обновить сервисное подключение» (используйте полную версию диалога). Там вы можете найти идентификатор подписки и идентификатор участника службы.

Затем вы должны дать явные разрешения для этого SPN:

Login-AzureRmAccount -subscription <YourSubscriptionID>
$spn= Get-AzureRmADServicePrincipal -spn <YourSPN>
Set-AzureRmKeyVaultAccessPolicy -VaultName <YourVaultName> -ObjectId $spn.Id -PermissionsToSecrets get,list;
6
задан laurencer 19 March 2009 в 06:32
поделиться

3 ответа

Это может быть легко сделано с ANTLR. Если вывод достаточно подобен, можно просто использовать текст, обрабатывающий механизм по шаблону — иначе он может генерировать абстрактное синтаксическое дерево для Вас для пересечения.

5
ответ дан 9 December 2019 в 22:40
поделиться

Я видел систему, которая использовала частичные классы и частичные методы для обеспечения регенерации кода, не влияя на пользовательский код. "Механизм правил", если Вы желание были полностью сгенерированы из диаграммы состояний Visio. Это в основном плохо, укомплектовывает рабочий процесс, но очень легкий изменить. Схема Viso экспортировалась в XML, который был считан в использовании powershell и T4 для генерации классов.

Вышеупомянутый пример имеет внешний DSL. Т.Е. внешний на язык программирования, что выполнение приложения в. Вы могли, с другой стороны, создать внутренний DSL, который реализуется и используется на языке программирования.

Это и предыдущая статья о DSLSs из Журнала Кода довольно хороши.

В вышеупомянутой ссылке Neal Ford показывает Вам, как создать внутренний DSL в C# с помощью быстрого интерфейса.

Одна вещь, которую он не упомянул еще, состоит в том, что можно поместить этот атрибут [EditorBrowsable (EditorBrowsableState. Никогда)] на Ваших методах так, чтобы они не появлялись к intellisense. Это означает, что можно скрыть non-DSL (если Вы будете), методы на классе от пользователя DSL создание быстрого API, намного более поддающегося обнаружению.

Вы видите, что быстрый интерфейс записан живой в этом видео ряду Daniel Cazzulino при записи контейнера МОК с TDD

На предмет внешнего DSLs у Вас также есть опция Осло (CTP в данный момент), который довольно мощен в, он - способность позволить Вам создать внешний DSLs, который может быть выполнен непосредственно, а не для использования генерации кода, которые задумываются о нем, не действительно большая часть DSL вообще.

5
ответ дан 9 December 2019 в 22:40
поделиться

Я думаю, что Вы на правильном пути.

То, что я обычно делаю в такой ситуации, является дизайном простой язык, который получает мои потребности, и запишите LL1 (Рекурсивный спуск) синтаксический анализатор для него.

Если язык должен иметь нетривиальный синтаксис C# в нем, я могу или заключить это в кавычки или просто перенести его в скобках, что я могу распознать и просто передать его до выходного кода.

У меня может или быть он, генерируют структуру дерева синтаксического анализа и генерируют, говорят, что 3 различных видов кода от того, что, или у меня может просто быть он, генерируют код на лету, или использование переменной режима с 3 значениями, или просто одновременно пишут код к 3 различным выходным файлам.

Существует больше чем один способ сделать это. Если Вы боитесь записи синтаксических анализаторов (как некоторые программисты), там много помогает в другом месте на ТАК.

1
ответ дан 9 December 2019 в 22:40
поделиться
Другие вопросы по тегам:

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