如何防止发布附属程序集

Mem*_*sto 6 c# .net-core

通过命令行使用“dotnet publish”进行发布时,始终会出现本地化和代码覆盖率附属程序集(如图所示)。

我找到了一个部分解决方案,即添加

<SatelliteResourceLanguages>en-US</SatelliteResourceLanguages>
Run Code Online (Sandbox Code Playgroud)

在 .csproj 文件中删除那些特定于语言的程序集。之所以没有完全解决问题,是因为虽然它从常规项目中删除了所有本地化附属程序集,但仍有一些保留在 xUnit 项目中。图像中的每个语言文件夹仅包含一个 dll,“Microsoft.VisualStudio.TraceDataCollector.resources.dll”,而代码覆盖文件夹包含一些特定于代码覆盖的 dll 和一个 exe。

我尝试了我发现的各种解决方案,例如在 .csproj 中添加以下内容:

<ItemGroup>
   <Content Include="wwwroot\LicenceFiles" CopyToPublishDirectory="Never" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

但没有任何帮助。它用于删除 wwwroot 文件夹,但对于任何语言文件夹,当指定这些文件夹时它没有做任何事情。我上面提到的部分解决方案是唯一最终删除某些内容的方法。我正在寻找一种方法来删除这些文件夹,而无需使用批处理文件或类似文件,纯粹通过项目设置、发布选项或类似的东西。

我使用的是 dotnet 核心版本 2.2.203。

额外的文件夹

小智 3

我还在启动的 .NET Core Web 项目中添加了 SatelliteResourceLanguages 标签,但在部署解决方案时发现了同样的问题。我将 IsPublishable 标签添加到我的测试项目中,这些文件不再与我的解决方案一起部署。

WebApp.Tests.csproj

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <IsPackable>false</IsPackable>
    <IsPublishable>false</IsPublishable>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

网络应用程序用户界面

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <SatelliteResourceLanguages>en</SatelliteResourceLanguages>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)