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 (или какой у него там тип).
А, вижу… Там так и надо… А ты пробовал использовать первую перегрузку SetCustomAttribute? На msdn для неё хоть примеры есть, а массив байт - как ты знаешь как правильно в него сериализовать строку?
Ну дык. Я так понял ты в юникоде раскладываешь каждый символ на 2 байта и потом всё вместе соединяешь. Вот только что то мне подсказывает что ему нужна строка в ANSI, при чём нуль-терминированная. А может и ещё что.
Сделано:
Огромное спасибо @Sun_Serega и @Raevski.
Для просмотра изменений – смотрите коммит “Директива {$Title ’ '}”, другой коммит “исправляет” кодировку (можно ли это назвать исправлением? (с) @Sun_Serega).
Желательно принять как можно быстрее, так как в Compiler.cs очень часто вносятся изменения.
Ну, если кто то кинет пулл реквест с багом - то он же и исправлять должен, это однозначно. Я говорю про то что отношение “лучше не трогайте” - в корне неправильно.
Это если разработчики правят. Но мелочи аля quality-of-life тоже надо кому то исправлять.
И ещё раз, если бы проблема была в коммите котова - он бы сам и исправлял, и ничего в этом плохого нет.
Но, он кидал мне версию после своих исправлений и там всё было норм.
А то что мы видим тут - похоже на неудачную попытку разработчиков исправить проблемы с маштабированием элементов IDE, о которых говорил @MrFresnel.
А где по этому принципу не работает? Хотите знать - узнавайте. Не хотите - верьте тем кто в этом разбирается.
И, когда вы читаете что то в справке или чейнджлоге - вы тоже только “верите”. Информации там не всегда отражает правду, потому что 1. она может быть устаревшая и 2. разработчики тоже имеют право ошибаться.
А то что говорю я - по крайней мере реже будет устаревшим. Я так же всегда перепроверяю что пишу, даже если на 100% уверен, но, утверждать что нигде ничего не забываю - не буду.