如何确保将appsettings.dev.json复制到输出文件夹?
我有三个配置文件,每个环境一个:
- appsettings.json – >制作
- appsettings.dev.json – >开发
- 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选取。