Добавить пользовательский элемент управления из другого проекта SharePoint 2013 null - PullRequest
0 голосов
/ 13 июня 2019

Я создал User Control и проверил его на странице в том же проекте, и все работало нормально. Затем я создал пакет Nuget и добавил его в целевой проект. Кажется, все работает - тип определен, и я могу создать элемент управления. Однако дочерние элементы управления моего элемента управления не инициализируются - все они null. Как я могу это починить? Я пробовал разные дубли на сборке реестра: <%@ Register TagPrefix="cc" Namespace="SomeNamespace" Assembly="MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxx"%> Этот работает так, как я описал.

<%@ Register TagPrefix="cc" TagName="CustomControl" Src="../../../_controltemplates/15/Project/CustomControl.ascx" %> возвращает ошибку синтаксического анализа (код не найден - он скомпилирован в dll).

Я попытался явно добавить файлы .cs и удалить .ascx. Единственное решение, которое я придумал, - вручную в конструкторе инициализировать все дочерние элементы управления моего пользовательского элемента управления. Но это последнее средство. Я хотел бы использовать встроенный механизм для этого.

1 Ответ

0 голосов
/ 14 июня 2019

Я нашел какое-то решение. Я только что добавил оба пункта реестра

<%@ Register TagPrefix="cc" Namespace="SomeNamespace" Assembly="MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxx"%>
<%@ Register TagPrefix="cc" TagName="CustomControl" Src="../../../_controltemplates/15/Project/CustomControl.ascx" %>

и добавлено в .nuspec:

<files>
    <file src="ControlTemplates\" target="content\ControlTemplates" />
    <file src="Layouts\" target="content\Layouts" />
</files>

после установки для CustomControl.ascx.cs свойства Copy to Outputdirectory до Copy always.

Это не то решение, которое я искал - есть предупреждения о множественных определениях элементов управления, и мне приходится редактировать .csproj после каждого обновления пакета, чтобы добавить <DependentUpon> для файлов. И я должен не забыть добавить некоторую папку UserControl и Image mapped перед первой загрузкой пакета, иначе Visual Studio не увидит элемент управления. Тем не менее, это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...