Может ли консоль c# получить информацию об отражении в элементе управления Windows? - PullRequest
0 голосов
/ 06 февраля 2020

Я пишу консольное приложение, которое запускается Visual Studio как шаг перед сборкой. Это приложение должно иметь возможность получать информацию о типе элементов управления (например, System. Windows .Controls.Button), что обычно невозможно, поскольку System. Windows .Controls не входит в консольное приложение.

Как мое консольное приложение может загрузить необходимую DLL и извлечь информацию о типе?

1 Ответ

0 голосов
/ 06 февраля 2020

Чтобы загрузить PresentationFramework.dll и получить доступ к информации о ней, мне сначала нужно было загрузить WindowsBase.dll. Окончательный код выглядит примерно так:

Assembly assem1 = Assembly.LoadFrom(@"C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\3.1.1\WindowsBase.dll");
Assembly assem2 = Assembly.LoadFrom(@"C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\3.1.1\PresentationFramework.dll");
Type t2 = assem2.GetType("System.Windows.Controls.Button");
PropertyInfo contentProperty = t2.GetProperty("Content");

Если я пытаюсь добавить ссылку на PresentationFramework.dll, он расстраивается, говоря:

There was a mismatch between the processor architecture of the project being built "MSIL" and the processor architecture of the reference "PresentationFramework", "AMD64". 

, что имеет смысл.

...