GetDirectory возвращает неправильный путь отладки - PullRequest
1 голос
/ 29 октября 2019

Установленный путь отладки моей книги Excel VSTO: C:\Users\MyName\Desktop\Testing\Excel Stuff\VSTO\Debug\

Я пытаюсь добавить файл appsettings.json к единице

private void ThisWorkbook_Startup(object sender, System.EventArgs e)
{
    IUnityContainer container = new UnityContainer();

    var config = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
            .Build();

    MessageBox.Show(Directory.GetCurrentDirectory()); // Trying to see what the directory is here

    container.RegisterInstance<IConfiguration>(config);

    // Logging
    container.RegisterType<ILogWriter, TextLogger>();
    container.RegisterType<ILoggingService, LoggingService>();

    // Set up Context
    container.RegisterInstance<FinanceDWEntities>(new FinanceDWEntities());
    container.Resolve<MainService>();
}

Когда у меня MessageBox, показатьоднако в текущем каталоге он отображает только: C:\Users\MyName\Desktop, что объясняет, почему моя appsettings информация возвращается в ноль, однако почему GetCurrentDirectory не возвращает полный путь отладки?

Ответы [ 2 ]

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

см. Здесь: https://stackoverflow.com/a/6041505/559144 вы должны использовать

AppDomain.CurrentDomain.BaseDirectory 
0 голосов
/ 29 октября 2019

текущий каталог отличается от исходного каталога (что вам нужно). Вы можете попробовать AppDomain.CurrentDomain.BaseDirectory. Это каталог, который сборщик проверяет для сборок (в большинстве случаев bin).

, так как вы запускаете приложение на рабочем столе:

System.IO.Path.GetDirectory(Application.ExecutablePath)

https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.application.executablepath?view=netframework-4.8

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...