从 dotnet 发布中排除 css 个隔离资产
Exclude css isolation assets from dotnet publish
我正在使用 RazorPages(在 ASP.NET Core 6 上)和 css 隔离功能。 css 文件在 obj/{Debug,Release}/net6.0/scopedcss/Pages/
处生成,并在执行 dotnet publish
.
时包含在内
我也使用 Webpack,所以我不需要发布那些 css 文件(它们已经被 Webpack 捆绑)。
我将所有这些的变体添加到我的 Project.csproj
但没有成功:
<ItemGroup>
<Content Remove="obj/*/*/scopedcss/**/*" />
</ItemGroup>
<ItemGroup>
<Content Remove="*.cshtml.rz.scp.css" />
</ItemGroup>
<ItemGroup>
<None Remove="obj/*/*/scopedcss/**/*" />
</ItemGroup>
<ItemGroup>
<Compile Remove="*.cshtml.rz.scp.css" />
</ItemGroup>
<ItemGroup>
<PublishedFiles Remove="obj/*/*/scopedcss/**/*" />
</ItemGroup>
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);obj/*/*/scopedcss/**/*</DefaultItemExcludes>
</PropertyGroup>
如何从发布的输出中排除 css 隔离资产?
更新
我找到了控制它的 msbuild 东西,但不知道如何防止它在发布期间被复制。这个bit in the SDK imports the feature's msbuild targets, which are here and here.
这是 unsupported for now,但会在 net7 中实现(希望如此)。
使用“私有”属性的解决方法:
<Target Name="_RemoveScopedCssFiles" AfterTargets="_AddGeneratedScopedCssFiles">
<ItemGroup>
<StaticWebAsset Remove="@(StaticWebAsset)" Condition="$([System.String]::Copy('%(Identity)').EndsWith('rz.scp.css'))">
</ItemGroup>
</Target>
我不太愿意使用它,因为它不是 public 合同/接口的一部分。不过它可能适合你。
一个缓慢而丑陋但安全的解决方法是让运行时发布文件,然后删除它们:
<Target Name="DeleteScopedCssAssetsAfterPublish" AfterTargets="AfterPublish">
<RemoveDir Directories="$(PublishUrl)/wwwroot/Pages" />
</Target>
我正在使用 RazorPages(在 ASP.NET Core 6 上)和 css 隔离功能。 css 文件在 obj/{Debug,Release}/net6.0/scopedcss/Pages/
处生成,并在执行 dotnet publish
.
我也使用 Webpack,所以我不需要发布那些 css 文件(它们已经被 Webpack 捆绑)。
我将所有这些的变体添加到我的 Project.csproj
但没有成功:
<ItemGroup>
<Content Remove="obj/*/*/scopedcss/**/*" />
</ItemGroup>
<ItemGroup>
<Content Remove="*.cshtml.rz.scp.css" />
</ItemGroup>
<ItemGroup>
<None Remove="obj/*/*/scopedcss/**/*" />
</ItemGroup>
<ItemGroup>
<Compile Remove="*.cshtml.rz.scp.css" />
</ItemGroup>
<ItemGroup>
<PublishedFiles Remove="obj/*/*/scopedcss/**/*" />
</ItemGroup>
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);obj/*/*/scopedcss/**/*</DefaultItemExcludes>
</PropertyGroup>
如何从发布的输出中排除 css 隔离资产?
更新
我找到了控制它的 msbuild 东西,但不知道如何防止它在发布期间被复制。这个bit in the SDK imports the feature's msbuild targets, which are here and here.
这是 unsupported for now,但会在 net7 中实现(希望如此)。
使用“私有”属性的解决方法:
<Target Name="_RemoveScopedCssFiles" AfterTargets="_AddGeneratedScopedCssFiles">
<ItemGroup>
<StaticWebAsset Remove="@(StaticWebAsset)" Condition="$([System.String]::Copy('%(Identity)').EndsWith('rz.scp.css'))">
</ItemGroup>
</Target>
我不太愿意使用它,因为它不是 public 合同/接口的一部分。不过它可能适合你。
一个缓慢而丑陋但安全的解决方法是让运行时发布文件,然后删除它们:
<Target Name="DeleteScopedCssAssetsAfterPublish" AfterTargets="AfterPublish">
<RemoveDir Directories="$(PublishUrl)/wwwroot/Pages" />
</Target>