更改工作目录时,AddRazorRuntimeCompilation不起作用

问题描述

我正在使用最新的.Net 5 RC2。由于某些原因,当我运行debug时,工作目录设置为项目目录,而不是“ 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无法工作。有什么建议吗?

解决方法

由于您的工作目录不再包含cshtml文件,因此您需要在csproj文件的构建过程中将它们标记为复制到ouput目录:

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

请注意,这意味着您无法在IDE中应用实时编辑。

,

这是我找到的解决方案:

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