5

希望进行以下设置:

我正在开发一个 Blazor 应用程序,并使用官方的 css 隔离捆绑器。我正在使用Less,并安装了一个 Less 转换器,它在构建时创建所需的 css。

但是,通过 运行我的应用程序时dotnet watch run,它现在通常会陷入无限循环。

造成这种情况的原因可能是文件dotnet watch run发生了变化*.razor.css,重新构建,并且循环不断重复。

所以这是我的问题:

如何将我的 csproj(新网络标准格式)配置为**\*.razor.css从监视进程中排除?它也会从我的整个 VS 解决方案中消失。

4

4 回答 4

6

玩了上面两个答案,但都不适合我。我在构建过程中生成了一些文件,这可能是其他 2 个对我不起作用的原因。根据上面共享的 Microsoft 文档(https://docs.microsoft.com/en-us/aspnet/core/tutorials/dotnet-watch?view=aspnetcore-3.1),要从手表中删除项目,您也可以通过定义。这样做适用于我的场景。

<ItemGroup>
    <Content Remove="wwwroot\dist\**" />
    <Content Include="wwwroot\dist\**" Watch="false" />
</ItemGroup>

我确实必须添加内容删除,否则该项目被声明两次并且构建将失败。

于 2021-06-07T23:42:46.083 回答
1

来到这里后我遇到了同样的问题,结果是:

<ItemGroup>
    <Watch Remove="wwwroot\**\*" />
</ItemGroup>

对我来说很好用:)

于 2021-03-20T20:03:38.077 回答
0

我有类似的设置,但我使用的是 SASS。我有一个自定义目标来执行命令npm run sass,因此文件是作为该dotnet build过程的一部分生成的,这使得手表重新触发器在无限循环中构建。

就我而言,我找到的解决方案如下:

  1. 改变DefaultItemExcludes
<PropertyGroup>
   <DefaultItemExcludes>$(DefaultItemExcludes);Features/**/*.css</DefaultItemExcludes>
</PropertyGroup>
  1. 调整确保 css 编译目标在之前运行BeforeResGen而不是Compile(我之前使用的):
  <Target Name="CompileScopedScss" BeforeTargets="BeforeResGen">
    <Exec Command="npm run sass -- %(ScopedScssFiles.FullPath) %(RootDir)%(Directory)%(FileName).css --no-source-map" />
  </Target>
  1. 包含 css 文件并设置Watch="False"
    <ItemGroup>
      <Content Include="Features/**/*.css" Watch="False" />
    </ItemGroup>

我在前一个目标之后的目标中执行此操作,但它似乎也在它之外工作。

在我的情况下,仅使用<Content Update... Watch="False" />是不够的。在我的情况下<Watch Remove="..." />也不起作用,我相信这可能与文件是在构建过程中生成的事实有关。

于 2022-01-10T06:46:23.677 回答
0

请编辑您的.csproj文件并将以下内容添加到其中

<ItemGroup>  
    <Watch Exclude="**\*.razor.css" />
</ItemGroup>

更多信息在

https://docs.microsoft.com/en-us/aspnet/core/tutorials/dotnet-watch?view=aspnetcore-3.1

于 2020-12-20T19:32:40.287 回答