如何确保将appsettings.dev.json复制到输出文件夹?

我有三个配置文件,每个环境一个:

  1. appsettings.json – >制作
  2. appsettings.dev.json – >开发
  3. appsettings.stg.json – > staging

如果我将ASPNETCORE_ENVIRONMENT设置为dev ,我会收到一个运行时exception,抱怨无法找到appsettings.dev.json。 我尝试添加

"copyToOutput": [ "appsettings.dev.json" ] 

到project.json中的buildOptions部分,但似乎没有任何效果。

有没有其他方法可以强制appsettings.dev.json复制到输出目录?

在“project.json”中包含这个对我有用:

 ... "publishOptions": { "include": [ "wwwroot", ... "appsettings.json", "appsettings.Development.json", ... ] }, ... 

您是否设置了放置appsettings.dev.json的基本路径?

 var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true); 

假设您使用的是Visual Studio:

通常,对于过去的服务,我让其他开发人员设置了“构建事件”,以确保项目中的某些内容得以构建。 通常,它将以Visual Studio 2015的ASP.NET项目属性为例:>“构建事件”(左窗格)>单击“编辑后构建”。 在命令行中写入项目应如何构建以输出的说明。 例如:

 mkdir "$(ProjectDir)bin\Setup" 

在bin下创建一个名为’Setup’的目录

 Del "$(ProjectDir)bin\Setup\*.* /Q" 

删除新创建的bin中的所有现有项目

 copy "$(TargetDir)*.dll" "$(ProjectDir)bin\Setup" 

将dll从构建位置复制到新的安装位置

现在,如果您正在进行构建过程,其中“Configuration Manager”正在为每个环境执行不同的输出,并且您只需要在每个环境中都需要遍历某个级别,请按名称查找这些分区。 dev’或’stg’然后将它们复制回来。 您可以创建或列出VS知道的与您的JSON数据匹配的环境的变量。

就我而言, appsettings.json没有被复制用于unit testing。

如果右键单击该文件并选择“ 属性” ,则会出现此对话框。 将构建操作更改为嵌入式资源 ,该文件将被复制到bin文件夹以供unit testing选取。

在此处输入图像描述