2015-09-01 2 views
4

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

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

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

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

ответ

2

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

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

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

+0

Я установил консольное приложение CoreCLR и нашел интерфейс IApplicationEnvironment, но я не смог найти его реализацию. Есть ли что-то еще, что дает мне реализацию этого интерфейса? –

+2

Просто передайте его как аргумент конструктору класса 'Program.cs'. Он будет введен как DI: https://github.com/aspnet/dnx/blob/dev/src/Microsoft.Dnx.Tooling/Program.cs#L20 –

+0

Это сработало. Спасибо! :) Интересно, что еще может быть вложено каркасом. –

Смежные вопросы