通过命令行使用“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)