AddRazorRuntimeCompilation не работает при изменении рабочего каталога

Я использую новейший .Net 5 RC2. По какой-то причине, когда я запускаю отладку, рабочий каталог устанавливается в каталог проекта, а не в bin\Debug\net5.0-windows. Это вызывает некоторые проблемы, потому что я использую некоторые общие файлы из других проектов (все они копируются в одну папку при сборке), поэтому для меня важно иметь рабочий каталог в $(TargetDir). Я пытался добиться этого двумя способами:

Измените launchSettings.json следующим образом:

  "profiles": {
    "WWW": {
      "commandName": "Project",
      "workingDirectory": "$(TargetDir)",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
      },
      "applicationUrl": "https://localhost:5001;http://localhost:5000"
    }
  }
}

Измените .csproj следующим образом:

<PropertyGroup>
    <RunWorkingDirectory>$(MSBuildProjectDirectory)\bin\$(Configuration)\$(TargetFramework)\</RunWorkingDirectory>
</PropertyGroup>

оба эти способа работали, однако RazorRuntimeCompilation не работает, когда я меняю рабочий каталог. Какие-либо предложения?


person Ivan Sadovsky    schedule 27.10.2020    source источник


Ответы (2)


Поскольку ваш рабочий каталог больше не содержит файлы cshtml, вам необходимо пометить их для копирования в выходной каталог во время сборки в файле csproj:

<ItemGroup>
  <Content Update="**\*.cshtml" CopyToOutputDirectory="PreserveNewest" />
  <Content Update="**\*.razor" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>

Обратите внимание, что это означает, что вы не можете применять живое редактирование из вашей IDE.

person Martin Ullrich    schedule 29.10.2020

Вот решение, которое я нашел:

var Dir = Path.GetFullPath(AppContext.BaseDirectory + "../../../"); 
builder.AddRazorRuntimeCompilation(options => options.FileProviders.Add(new PhysicalFileProvider(Dir))); ;
person Ivan Sadovsky    schedule 03.11.2020