在从 xproj、porject.json 移动到 csproj 时保存 appsettings.json 的集成测试映射

save integration test mapping of appsettings.json on moving from xproj,porject.json to csproj

我正在尝试将我的 sln 从 xproj+project.json 迁移到 csproj。 我的集成测试项目 project.json:

"buildOptions": {
"copyToOutput": {
  "mappings": {
    "appsettings.json": "../../src/WebApp/appsettings.json",
    "appsettings.testing.json": "../../src/WebApp/appsettings.testing.json"
  }
 }
}

当我用 visual studio 2017 打开 .sln 时,它自动转换为:

<ItemGroup>
<None Update="..\..\src\WebApp\appsettings.testing.json">
  <Link>appsettings.testing.json</Link>
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="..\..\src\WebApp\appsettings.json">
  <Link>appsettings.json</Link>
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>

但现在集成测试停止工作,因为它找不到 appsettings.json 文件。 它抛出:

Error Message: System.IO.FileNotFoundException : The configuration file 'appsettings.json' was not found and is not optional. The physical path is 'C:\Work\billing-app\test\IntegrationTests\bin\Debug\netcoreapp1.1\appsettings.json'.

我该如何修复它,让它继续将真实的配置文件复制到集成测试项目中? 10 倍!

解决方案是将 csproj 添加到我的 Web 项目中:

<ItemGroup>
<Content Update="appsettings.json">
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>

并且有效。

(integrationTest项目csproj上面提到的几行可以删除)