в связи с созданием одного большого проекта (собственной cms) возникла необходимость создать сборщика пакетов. CMS расширяемое, то есть пользователь должен иметь возможность создать свой пакет(модуль), нечто похожее на пакет nuget или wsp пакет для SharePoint. И чтобы все это не делать руками, я хочу это автоматизировать. Для создания расширения под Visual Studio очень мало информации в интернете, а из официального только https://github.com/Microsoft/VSSDK-Extensibility-Samples . Решил собрать свою библиотеку, которая бы облегчила пользователю создание VSIX дополнений. Из разных источников собрал лучшее. подробно можно прочитать здесь: https://github.com/d-kochanzhi/VSExtensibilityHelper Сразу привожу пример как создать свой Editor для определенного расширения
и для WPF конторолов

для WinForms контролов

Теперь с легкостью любой может создать свой компановщик или редактор.
[Ещё]
Написал небольшую библиотеку для работы с массивами объектов на javascript (js-array-extensions)
примеры:
arrayExt.SortBy(myArrayOfObjects,[ "name", "-type" ]);
сортирует массив по полям "name" по возрастанию и "type" по убыванию
arrayExt.UniqueBy(myArrayOfObjects,["name", "type"]);
получает массив из списка уникальных объектов по полям "name" и "type"
arrayExt.FilterBy(myArrayOfObjects,[ { "key": "name", "value": "Jon", "operator": "not like" } ]; );
Фильтрует массив по полю "name" где значение НЕ СОДЕРЖИТ "Jon"
[Ещё]
Написал vue.js компонент для отображения/редактирования данных в таблице. Полное описание и исходники тут: cmp-table
Но хотел бы показать его в работе (Используются возможности: редактируемые поля, не редактируемые поля, доп. столбцы, группировка, сортировка, и динамические столбцы).

[Ещё]
Прошел Курс 20489: Создание продвинутых решений для Microsoft SharePoint Server 2013.
- сервис поиска,
- сервис управления содержимым,
- управление централизованной инфраструктурой,
- управление социальной нагрузкой,
- управление пользовательскими данными,
- механизмы управления веб-контентом.
[Ещё]
Заполнение шаблонов писем из элемента списка Sharepoint.
Создаем парсер:
TextBuilder textBuilder =
new TextBuilder(new SampleListItemProvider(item));
string mailTemplate =
"ItemTitle: {%Field(Title)%}" + Environment.NewLine +
"NoteFld: {%Field(NoteFld)%}" + Environment.NewLine +
"ChoiceFld: {%Field(ChoiceFld)%}" + Environment.NewLine +
"NumberFld: {%Field(NumberFld)%}" + Environment.NewLine +
"CurrencyFld: {%Field(CurrencyFld)%}" + Environment.NewLine +
"DateTimeFld: {%Field(DateTimeFld)%}" + Environment.NewLine +
"LookupFld: {%Field(LookupFld)%}" + Environment.NewLine +
"BooleanFld: {%Field(BooleanFld)%}" + Environment.NewLine +
"UserFld: {%Field(UserFld)%}" + Environment.NewLine +
"URLFld: {%Field(URLFld)%}" + Environment.NewLine +
"CustomProperty: {%CustomProperty%}" + Environment.NewLine +
"CustomMethodNoParams: {%CustomMethodNoParams%}" + Environment.NewLine +
"CustomMethodWithParams: {%CustomMethodWithParams(6,9)%}" + Environment.NewLine +
"CustomFormatProperty: {%CustomFormatProperty:dd/MM/yyyy%}";
string output = textBuilder.Parse(mailTemplate);
Результат:
ItemTitle: Hello world!
NoteFld: <div class="ExternalClass27392DF017794231B6A661BFB1A566E1"><p>Big Text<br></p><p>Note Input<br></p></div>
ChoiceFld: Вариант 2
NumberFld: 999
CurrencyFld: 123,00 ₽
DateTimeFld: 09.08.2017
LookupFld: <a href="http://***/_layouts/15/listform.aspx?PageType=4&ListId={d23e63e7-94d2-4a0a-b569-8969eeed2a25}&ID=4&RootFolder=*">Гибкость в принятии решений</a>
BooleanFld: Yes
UserFld: <span class="ms-noWrap"><span class='ms-imnSpan'><a href='#' onclick='IMNImageOnClick(event);return false;' class='ms-imnlink ms-spimn-presenceLink' ><span class='ms-spimn-presenceWrapper ms-imnImg ms-spimn-imgSize-10x10'><img name='imnmark' class='ms-spimn-img ms-spimn-presence-disconnected-10x10x32' title='' ShowOfflinePawn='1' src='/_layouts/15/images/spimn.png?rev=23' alt='No presence information' sip='a@a.ru' id='imn_1,type=smtp'/></span></a></span><span class="ms-noWrap ms-imnSpan"><a href='#' onclick='IMNImageOnClick(event);return false;' class='ms-imnlink' tabIndex='-1'><img name='imnmark' class='ms-hide' title='' ShowOfflinePawn='1' src='/_layouts/15/images/blank.gif?rev=23' alt='' sip='a@a.ru' id='imn_2,type=smtp'/></a><a class="ms-subtleLink" onclick="GoToLinkOrDialogNewWindow(this);return false;" href="/MatrixPoll/_layouts/15/userdisp.aspx?ID=59">Дмитрий </a></span></span>
URLFld: <a href="http://****/Lists/test/EditForm.aspx">HyperLinkSample</a>
CustomProperty: 45
CustomMethodNoParams: 1
CustomMethodWithParams: 15
Ссылка:
https://github.com/dzsoft-ru/d.SPTextBuilder
[Ещё]