Я использовал эту конфигурацию много раз раньше, и у меня никогда не было проблем, поэтому я вернул свой проект к основам. Я использую Specflow с Specrun, и часть specrun - единственное, что изменилось.
Я пытаюсь настроить регистратор serilog, используя файл appsettings. json, который находится в моем ядре. net bin базовый каталог. \ bin \ Debug \ netcoreapp3.1
Раньше я мог просто ссылаться на настройки приложения без пути без базового пути, но это изменилось, когда я перешел с NUnit на Specflow. Все еще используя basepath, можно найти местоположение. Однако, когда я пытаюсь создать регистратор и использовать readfrom, он ссылается на файл appsettings из странного места, а не на Configuration Root в только что установленной мной переменной конфигурации.
Ниже приведены две установочные переменные. Первый для конфигурации root настроек приложения, второй для регистратора serilog. Первый успешен и дает мне то, что выглядит как действительный объект IConfiguration. Во втором случае возникает ошибка. Это ошибка «System.IO.FileNotFoundException:« Не удалось найти файл »\ bin \ Debug \ netcoreapp3.1 \ SpecFlowPlusRunner \ netcoreapp3.1 \ TechTalk.SpecRun.Framework.Executor.anycpu.netcoreapp3_1.deps. json». '"
var configuration = new ConfigurationBuilder()
.SetBasePath(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location))
.AddJsonFile("appsettings.json")
.Build();
var logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();
Обратите внимание на дополнительную информацию. Это приложение netcore 3.1. Код выполняется внутри пакетов классов specflow.
<PackageReference Include="Microsoft.Extensions.Configuration" Version="3.1.6" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.6" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.1.6" />
<PackageReference Include="Serilog" Version="2.9.0" />
<PackageReference Include="Serilog.Settings.Configuration" Version="3.1.0" />
<PackageReference Include="Serilog.Sinks.File" Version="4.1.0" />
<PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" />
<PackageReference Include="SpecFlow" Version="3.3.57" />
<PackageReference Include="SpecFlow.NetCore" Version="1.3.5" />
<PackageReference Include="SpecFlow.Tools.MsBuild.Generation" Version="3.3.57" />
<PackageReference Include="SpecRun.SpecFlow" Version="3.3.41" />