Получить место сборки в CoreCLR

В CoreCLR я не могу получить расположение сборки, как это было в .NET Framework.

Похоже, что Location не является членом Assembly и что статические методы в Assembly, такие как GetExecutingAssembly, также исчезли.

Каков предпочтительный способ получения каталога сборки или любой информации о каталоге моей запущенной программы?

Я пробовал версии CoreCLR:
1.0.0-beta5 coreclr x64
1.0.0-beta6 coreclr x86


person Nick VanderPyle    schedule 01.09.2015    source источник


Ответы (1)


Поскольку вы упомянули 1.0.0-beta6, я предполагаю, что вы говорите о DNX.

Вы можете использовать IApplicationEnvironment. Это даст вам имя и базовый путь приложения.

Assembly.Location было бы сложно, потому что у вас может быть код, который компилируется на лету, поэтому сборка находится не в том месте, где вы могли бы ожидать.

person Victor Hurdugaci    schedule 11.09.2015
comment
Я настроил консольное приложение CoreCLR и нашел интерфейс IApplicationEnvironment, но не смог найти его реализацию. Есть ли что-то еще, что дает мне реализацию этого интерфейса? - person Nick VanderPyle; 14.09.2015
comment
Просто передайте его в качестве аргумента конструктору класса Program.cs. Он будет внедрен DI, как здесь: github.com/aspnet/dnx/blob/dev/src/Microsoft.Dnx.Tooling/ - person Victor Hurdugaci; 14.09.2015
comment
Это сработало. Благодарю вас! :) Интересно, что еще можно залить фреймворком. - person Nick VanderPyle; 16.09.2015