Читайте целевую платформу проекта во время разработки в C# - PullRequest
2 голосов
/ 24 января 2020

Можно ли определить, установлена ​​ли целевая платформа проекта winform в AnyCPU с использованием языка программирования C# в режиме разработки?

Например, создать элемент управления кнопки, который при нажатии определит, будет ли Целевая платформа проекта установлена ​​на AnyCPU, x86 или x64?

Это должно быть обнаружено в режиме разработки с помощью размещенного элемента управления, например, щелчок кнопки, определяющий целевую платформу проекта, в котором он используется.

Язык использования C#.

Ответы [ 2 ]

2 голосов
/ 24 января 2020

Вы можете добавить ссылку на 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.

0 голосов
/ 24 января 2020
  if (IntPtr.Size != 8)
  {
    //64-bit process.
  }


  if (IntPtr.Size != 4)
  {
   //32-bit process
  }
...