Как я могу попасть в корневую папку другого проекта в ядре .net? - PullRequest
0 голосов
/ 09 октября 2019

Мне нужно прочитать файл настроек (appsettings.json) из другого проекта в решении. Когда я использую:

Directory.GetCurrentDirectory()

из текущего проекта, я получаю следующий путь:

{projectRootFolder} \ bin \ Debug \ netcoreapp3.0 \

Мой вопрос: как я могу получить ту же самую папку в другом проекте в том же решении? Или есть лучший способ получить доступ к файлу настроек из другого проекта в текущем проекте?

Ответы [ 2 ]

0 голосов
/ 09 октября 2019

То, что вы пытаетесь сделать, невозможно. Для ASP.NET Core нет никакого способа узнать, где находится совершенно другое приложение, работающее в совершенно другом процессе.

Если вам нужен доступ к appsettings.json из другого проекта, вам нужно будет включить егокак связанный файл в вашем проекте, и установите его для копирования на выход. Затем вы получаете доступ к нему на самом деле из своего проекта (что все, что вы можете делать), но сам файл является общим.

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

0 голосов
/ 09 октября 2019

Если я правильно понимаю проблему, есть два заблуждения:

  1. Нет смысла обращаться к выходному каталогу другого проекта, поскольку структура имеет смысл только во время компиляции. У вас не будет той же структуры во время выполнения после "публикации" приложения.

  2. Directory.GetCurrentDirectory() возвращает текущий рабочий каталог. Это просто совпадение, которое будет установлено для выходного каталога проекта Visual Studio. Это может быть совершенно другой каталог.

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

Если вам действительно нужно открыть файл настроек, тогдаПроект с файлом настроек (A) должен пометить файл как «Копировать в выходной каталог», а проект для открытия файла (B) должен ссылаться на проект A. Таким образом, файл настроек также будет скопирован на выход проекта A.

...