升级到VS 2017 15.6.0,现在Directory.GetCurrentDirectory()返回\ bin \ Debug \ netcoreapp2.0

时间:2018-03-08 16:03:52

标签: c# asp.net-core .net-core asp.net-core-2.0

升级后,似乎所有我的.net核心控制台应用程序在调试时都会出错路径。

我有以下代码

private static void ConfigureServices(IServiceCollection serviceCollection)
{
        // build configuration
        var configuration = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())               
            .AddJsonFile("appsettings.json", false)
            .Build();
}

哪种方法可以正常工作,但现在我升级了,我收到以下错误

System.IO.FileNotFoundException: 'The configuration file 'appsettings.json' was not found and is not optional. The physical path is 'D:\projects\myproject\bin\Debug\netcoreapp2.0\appsettings.json'.'

我知道我可以将appsettings.json复制到此路径,但我之前从未这样做过,在升级之前完全没问题。

4 个答案:

答案 0 :(得分:2)

我建议删除.SetBasePath(Directory.GetCurrentDirectory())行。 SetBasePath方法现在是可选的,如果未调用then we infer the base path from application base

关于你的错误。在dotnet中There was a fix,改变行为:

  

将默认工作目录更改为输出文件夹而不是项目根目录。

在VS更新中,您已经安装了最新版本的.NET Core SDK。所以你需要立即将appsettings.json复制到输出文件夹。

答案 1 :(得分:0)

Startup已经从1.x稍微改为2.0,你不再使用配置构建器,它主要在幕后完成,但是你可以在Program.cs中声明你的appsettings.json文件

以下是操作方法:https://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/#add-configuration-providers

答案 2 :(得分:0)

试试这个:

string Path = Path.GetFullPath(Path.Combine(Directory.GetCurrentDirectory(), @"..\..\"));

只需从bin中移回两个目录。

答案 3 :(得分:0)

将appsettings.json文件属性“复制到输出目录”更改为“复制所有” 还应将appsettings.json文件的“复制到输出目录”属性设置为“如果更新则复制”,以便应用程序能够访问它。