Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core appsettings.json文件不在.net核心控制台项目中_Asp.net Core_.net Core - Fatal编程技术网

Asp.net core appsettings.json文件不在.net核心控制台项目中

Asp.net core appsettings.json文件不在.net核心控制台项目中,asp.net-core,.net-core,Asp.net Core,.net Core,我知道.net core已将app.config文件替换为appsetting.json。但是,此文件似乎仅为ASP.net项目添加。事实上,它甚至在“添加项目”列表中都不可用。 我发现这篇文章列出了需要添加的软件包: Microsoft.Extensions.Configuration Microsoft.Extensions.Configuration.FileExtensions Microsoft.Extensions.Configuration.Json 我添加了所有这些,它确实提供了

我知道.net core已将app.config文件替换为appsetting.json。但是,此文件似乎仅为ASP.net项目添加。事实上,它甚至在“添加项目”列表中都不可用。 我发现这篇文章列出了需要添加的软件包:

  • Microsoft.Extensions.Configuration
  • Microsoft.Extensions.Configuration.FileExtensions
  • Microsoft.Extensions.Configuration.Json
  • 我添加了所有这些,它确实提供了添加json配置文件的选项,但仍然没有
    应用程序设置文件
    ,该文件仅在ASP.Net Core下可用。 我试图理解为什么非web项目不需要配置,以及配置.net核心控制台应用程序的推荐方法。 提前感谢。

    非web项目可能需要配置,也可能不需要配置。但是,正如您所注意到的,VisualStudio没有将控制台项目与
    appsettings.json
    结合起来。显然,您可以将其作为json文件添加到项目中。一旦你拥有了它,挑战就是如何利用它。我经常在实体框架实用程序中使用配置对象和依赖项注入

    比如说,

    public static class Program
    {
        private static IConfigurationRoot Configuration { get; set; }
    
        public static void Main()
        {
            IConfigurationBuilder builder = new ConfigurationBuilder()
                .AddJsonFile("appsettings.json")
                .AddEnvironmentVariables();
            Configuration = builder.Build();
    
            IServiceCollection services = new ServiceCollection();
            services.AddDbContext<MyDbContext>(options =>
                options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
            services.AddScoped<IMyService, MyService>();
            IServiceProvider provider = services.BuildServiceProvider();
    
            IMyService myService = provider.GetService<IMyService>();
            myService.SomeMethod();
        }
    
        public class TemporaryDbContextFactory : IDesignTimeDbContextFactory<MyDbContext>
        {
            public MyDbContext CreateDbContext(string[] args)
            {
                IConfigurationBuilder configBuilder = new ConfigurationBuilder()
                    .AddJsonFile("appsettings.json")
                    .AddEnvironmentVariables();
                IConfigurationRoot configuration = configBuilder.Build();
                DbContextOptionsBuilder<MyDbContext> builder = new DbContextOptionsBuilder<MyDbContext>();
                builder.UseSqlServer(configuration.GetConnectionString("DefaultConnection"));
                return new MyDbContext(builder.Options);
            }
        }
    }
    
    公共静态类程序
    {
    专用静态IConfigurationRoot配置{get;set;}
    公共静态void Main()
    {
    IConfigurationBuilder=新配置生成器()
    .AddJsonFile(“appsettings.json”)
    .AddenEnvironmentVariables();
    Configuration=builder.Build();
    IServiceCollection服务=新的ServiceCollection();
    services.AddDbContext(选项=>
    options.UseSqlServer(Configuration.GetConnectionString(“DefaultConnection”));
    services.addScope();
    IServiceProvider=services.BuildServiceProvider();
    IMyService myService=provider.GetService();
    myService.SomeMethod();
    }
    公共类TemporaryDbContextFactory:IDesignTimeDbContextFactory
    {
    公共MyDbContext CreateDbContext(字符串[]args)
    {
    IConfigurationBuilder configBuilder=新的ConfigurationBuilder()
    .AddJsonFile(“appsettings.json”)
    .AddenEnvironmentVariables();
    IConfigurationRoot配置=configBuilder.Build();
    DbContextOptionsBuilder=新的DbContextOptionsBuilder();
    builder.UseSqlServer(configuration.GetConnectionString(“DefaultConnection”);
    返回新的MyDbContext(builder.Options);
    }
    }
    }
    

    这使我能够针对DbContext运行迁移和基于控制台的实用程序。您没有指定需要什么样的配置,所以这只是一个示例。但希望您能根据自己的需要进行调整。

    谢谢Felix。就是这样。我将继续添加一个名为appsettings.json的文件,并希望DXN将其视为框架appsetting.json文件。您猜对了,我正在编写一个基于数据库的非UI程序,并且正在使用linq2DB库,为此我必须初始化LinqToDB.Data.DataConnection()对象。但是,问题与我预期的相同。我可以添加具有此名称的文件。但是运行时抛出一个FieloToFunExtExcCEP,因为虽然该文件存在于项目中,但运行时没有将其视为正式文件,也没有将其复制到运行时路径(bin /Debug /NETCOREAPP2.2)中。方法不是IConfigurationBuilder接口的一部分。我不得不把这行注释掉。是的,您需要手动复制文件(至少我不知道如何将复制放入管道,尽管可能有办法)。如果您正在使用环境变量,请添加
    Microsoft.Extensions.Configuration.EnvironmentVariables
    。如果不是-只需删除调用即可避免FileNotFoundException。请确保将文件的“复制到输出目录”属性更改为“始终复制”或“如果更新,则复制”。这将把文件复制到运行时路径。