Я зашел на эту страницу в поисках подтверждения, что я ничего не пропустил при поиске свойства сборки, соответствующего корневому пространству имен, введенному на главной странице свойств проекта Visual Studio приложения Windows.
Поскольку у меня была идея решения проблемы для варианта использования, которая привела меня на эту страницу, и я ожидаю, что по крайней мере несколько других получат пользу от моего открытия, я оставил страницу открытой, пока проводил свое исследование.
Как я и подозревал, относительно легко связать осмысленное, не говоря уже о ультра полезное , пространство имен с входной сборкой.Следующее очень длинное выражение возвращает пространство имен класса Program , определенного в модуле Program.cs любого приложения Windows.
System.Reflection.Assembly.GetEntryAssembly ( ).EntryPoint.DeclaringType.Namespace )
Следующий оператор C #,выполняется из любого места в домене приложения, даже через вызов метода, который достигает DLL, сообщает имя подпрограммы точки входа и ее пространство имен.
Console.WriteLine (
"Namespace of Entry Point Routine {0} = {1} " ,
System.Reflection.MethodBase.GetCurrentMethod ( ).Name ,
System.Reflection.Assembly.GetEntryAssembly ( ).EntryPoint.DeclaringType.Namespace );
Для программы в режиме консоли с именем OperatingParameters_Demo.exe,корневое пространство имен которого OperatingParameters_Demo , приведенное выше выражение дает следующий вывод:
Namespace of Entry Point Routine Main = OperatingParameters_Demo
Практическое использование этого выражения заключается в том, что вы можете использовать его для создания абсолютного (полностью определенного) именииз Properties.Settings и Properties.Resources пространств имен записи сборки.
- Доступ к настройкам из любого места в приложении означает, что вы можете искатьдля параметра, имя которого неизвестно до времени выполнения.
- Доступ к ресурсуces из любого места в приложении означает, что строковые ресурсы, хранящиеся во входной сборке или ее сборках сателлитных ресурсов, доступны по всему домену приложения, даже если их имена неизвестны до времени выполнения.
IЯ почти закончил с приложением, которое использует этот метод для отображения имен параметров, которые хранятся в строках ресурсов на основе имен ресурсов, которые получены из внутреннего имени параметра.Это лежит в основе универсальной библиотеки обработки параметров программы, которую демонстрирует инструмент.
Этот демонстрационный проект начался, когда я начал работать над инструментом программиста для импорта заголовочных файлов C / C ++ в каталог проекта, чтобы я мог развернуть автономный проект в GitHub, даже если главные копииЗаголовки хранятся в другом месте, потому что они совместно используются десятками проектов.Когда его механизм разбора параметров приблизился к завершению, я понял, что невероятно близок к тому, чтобы иметь общий анализатор рабочих параметров и хранилище резервных копий, которые я хотел получить в течение многих лет.Импортер заголовков C / C ++ будет в конечном итоге опубликован.Однако на данный момент только его двигатель разбора завершен.Поскольку он полезен сам по себе, я намерен сначала опубликовать его.Оставайтесь с нами на The Code Project и GitHub .