Вы можете добавить ссылку на EnvDTE
и добавить в свой элемент управления такое свойство:
[EditorBrowsable(EditorBrowsableState.Never)]
public string TargetPlatform
{
get
{
if (!DesignMode)
return null;
var host = (IDesignerHost)Site.GetService(typeof(IDesignerHost));
var dte = (EnvDTE.DTE)host.GetService(typeof(EnvDTE.DTE));
var project = dte.ActiveSolutionProjects[0];
return project.ConfigurationManager.ActiveConfiguration.Properties
.Item("PlatformTarget").Value;
}
}
Примечание: Ответ - Po C, показывающий, как работает решение , Для реального сценария это должно быть только свойство времени разработки дизайнера элемента управления в отдельной сборке. Тогда вам не нужно распространять дополнительные сборки.
Также атрибут [Designer]
должен использовать имя типов, а не сам тип. Это так же, как работают windows дизайнеры форм. Вам не нужно распространять дополнительные сборки времени разработки вместе с вашим приложением, однако как часть пакета nuget или VSIX вашего установщика управления они должны распространяться для работы в VS.