как получить все имена действий контроллера во время компиляции (do tnet build) - PullRequest
0 голосов
/ 04 мая 2020

Мне нужно выполнить приведенный ниже код в команде do tnet build это возможно ?? или возможно получить эту информацию в azure dev opts? или возможно получить эту информацию в npm?

  Assembly asm = Assembly.GetExecutingAssembly();
  var controlleractionlist = asm.GetTypes()
          .Where(type => typeof(Microsoft.AspNetCore.Mvc.Controller).IsAssignableFrom(type))
          .SelectMany(type => type.GetMethods(BindingFlags.Instance | BindingFlags.DeclaredOnly | BindingFlags.Public))
          .Where(m => !m.GetCustomAttributes(typeof(System.Runtime.CompilerServices.CompilerGeneratedAttribute), true).Any())
          .Select(x => new
          {
            Controller = x.DeclaringType.Name,
            Action = x.Name,
            ReturnType = x.ReturnType.Name,
            Attributes = String.Join(",", x.GetCustomAttributes().Select(a => a.GetType().Name.Replace("Attribute", ""))),
          })
          .OrderBy(x => x.Controller).ThenBy(x => x.Action).ToList();
  string json = JsonConvert.SerializeObject(controlleractionlist.ToArray());

  //write string to file
  System.IO.File.WriteAllText("./jsondata.json", json);

1 Ответ

0 голосов
/ 04 мая 2020
  1. Изменить первую строку на это можно ($(Build.SourcesDirectory)/ProjectName/bin/Release/netstandard2.0/YourFile.dll)
Assembly assembly = Assembly.LoadFrom("full-path-to your-dll file");
Поместите свой код в метод Main (пожалуйста, помните о 1. шаге):
- task: PowerShell@2
  displayName: Run CSharp code
  inputs:
    targetType: 'inline'
    script: |
      $code = @"
      using System;
      namespace HelloWorld
      {
        public class Program
        {
          public static void Main(){
            Console.WriteLine("Hello world!");
          }
        }
      }
      "@

      Add-Type -TypeDefinition $code -Language CSharp   
      iex "[HelloWorld.Program]::Main()"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...