Как правильно добавить автономный скрипт C # в качестве шага в Octopus Deploy? - PullRequest
0 голосов
/ 07 сентября 2018

Итак, я собираюсь добавить автономный скрипт C # как часть шага в процессе развертывания, но у меня действительно трудное время, чтобы найти ссылку, показывающую как правильно «отформатировать» скрипт для использования в Octopus.

Я обнаружил, что все ссылки должны быть явными. Так, например, если сценарий использует HttpClient для выполнения запроса GET, вы не можете полагаться на операторы using для сокращения ссылки, а вместо этого должны использовать «полностью определенное пространство имен».

Так что, в основном, вместо того, чтобы делать это: HttpClient client = new HttpClient();

Вы должны сделать это так: System.Net.Http.HttpClient client = new System.Net.HttpClient()

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

Теперь, что произойдет, если у меня будет собственный класс? Как мне справиться с этим? Я проиллюстрирую, что я имею в виду на примере. Скажем, у меня есть следующее:

using System;

namespace MyOctoScript
{
      class Person
      {
             public string name { get; set; }
      }

     class Script
     {
          static System.Net.Http.HttpClient client = new System.Net.Http.HttpClient();
          static System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
          public const string endpoint = "some_valid_endpoint";

           static async System.Threading.Tasks.Task Main(string [] args)
           {
                 MyOctoScript.Person person = null;

                // Use Http Client to fetch JSON from a given endpoint
                System.Net.Http.HttpResponseMessage response = await client.GetAsync(endpoint);

               // Parse JSON from response
               string jsonString = await response.Content.ReadAsStringAsync();

              // Store object in variable of type Person
              person = serializer.Deserialize<MyOctoScript.Person>(jsonString);
           }
     }
}

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

Какие изменения (если таковые имеются) мне нужно внести в приведенный выше код, чтобы добиться этого?

Спасибо всем заранее!

...