Замечания и предложения

Был бы дизайнер для WPF-приложений… :slight_smile:

Да, я б с удовольствием поручил его кому-то интегрировать.

3 лайка

Директива {$description ‘’}
Короче, всё, что нужно сделать:
в TreeConverter\TreeConversion\compiler_string_consts.cs в 340-ую строку добавить

        public static string description_string = "description";

в Compiler\Compiler.cs в строку 1922 добавить:

                if (compilerDirectives.TryGetValue(TreeConverter.compiler_string_consts.description_string, out cds))
                {
                    cdo.Description = cds[0].directive;
                }

в 1986-ую:

                    if (!string.IsNullOrEmpty(project.description))
                        cdo.Description = project.description;

в 2012-ой надо заменить sw.WriteLine("VALUE \"FileDescription\"," + "\"" + "" + "\""); на sw.WriteLine("VALUE \"FileDescription\"," + "\"" + cdo.Description + "\""); В Compiler\ProjectInfo.cs в 33-ю строку:

        private string _description;

в 194-ой организовать свойство по тому полю:

        public string description
        {
            get
            {
                return _description;
            }
            set
            {
                _description = value;
            }
        }

в 483-ю добавить:

            writer.WriteAttributeString("Description", description);

и в 549-ую:

            description = reader.GetAttribute("Description");
            if (description == null) description = "";

в NETGenerator\NETGenerator.cs в 89-ую:

        private string _Description = "";

        public string Description
        {
            get { return _Description; }
            set { _Description = value; NeedDefineVersionInfo = true; }
        }

и последнее – необходимо как-то записать описание в сборку, с этим я не разобрался.
Вроде это всё, что требуется.

А почему не пулл реквестом?

Потому что гитхаб “хорошо” показывает изменения в файлах:

Да и я так и не разобрался как впилить описание в итоговую сборку.

Да-да. А потом что-то где-то вылезет в другом месте и разработчики будут еще полгода выковыривать баги на основе полсотни issure, которые им радостно нарисуют добрые люди. Зато будет удовлетворена сомнительная хотелка.

1 лайк

@RAlex, я бывал часто с Вами не согласен в чём-либо, но сейчас поддерживаю Вашу позицию.

Потому что не против твоей хотелки сейчас высказывания летят.

Я всё готов протестировать. Вряд ли добавление описания процессу может повлечь за собой какие-то критические ошибки.

Это хорошо, что готовы. Тогда тестируйте. Только, разберитесь с тем, с чем ещё не разобрались.

Пока это все - “сотрясания воздуха”. Разработчики по Вашему предложению не отписались, а тут главное - это их мнение.

1 лайк

Вообще, вроде бы так можно запихать описание:

            var descbyte = new byte[options.Description.Length * 2];
            int id = 0;
            foreach (char element in options.Description)
            {
                var ord = BitConverter.GetBytes(element);
                descbyte[id] = ord[0]; descbyte[id + 1] = ord[1];
                id += 2;
            }
            ab.SetCustomAttribute(typeof(System.Reflection.AssemblyDescriptionAttribute).GetConstructor(new Type[] { typeof(string) }), descbyte);

Ничего не падает, но и описания оно не даёт. Что-то я делаю не так.

Может я что то не понял, но ты вызываешь .GetConstructor, но не вызываешь полученный конструктор, в итоге передавая в SetCustomAttribute первым параметром System.Reflection.ConstructorInfo (или какой у него там тип).

@Sun_Serega, да, ConstructorInfo.

А, вижу… Там так и надо… А ты пробовал использовать первую перегрузку SetCustomAttribute? На msdn для неё хоть примеры есть, а массив байт - как ты знаешь как правильно в него сериализовать строку?

Я и не знаю) в BitConverter.GetBytes нет перегрузки для string.

Ну дык. Я так понял ты в юникоде раскладываешь каждый символ на 2 байта и потом всё вместе соединяешь. Вот только что то мне подсказывает что ему нужна строка в ANSI, при чём нуль-терминированная. А может и ещё что.

Страшновато такое заливать. Всё удалил, потом всё вставил. Или не всё ))

2 лайка

Сделано:

Огромное спасибо @Sun_Serega и @Raevski.
Для просмотра изменений – смотрите коммит “Директива {$Title ’ '}”, другой коммит “исправляет” кодировку (можно ли это назвать исправлением? (с) @Sun_Serega).
Желательно принять как можно быстрее, так как в Compiler.cs очень часто вносятся изменения.

На баги протесчено (хотя там и нечему ломаться).

1 лайк