Msbuild 为什么.Net Core 2.2现在发布了大量其他DLL

Msbuild 为什么.Net Core 2.2现在发布了大量其他DLL,msbuild,visual-studio-2017,asp.net-core-2.2,Msbuild,Visual Studio 2017,Asp.net Core 2.2,我刚刚将.NETCore2.0项目升级到2.2。据我所知,我没有更改任何其他设置,但现在当我发布到文件系统时,它会发布大量以前没有的文件夹和DLL 我需要发布它们吗?如果没有,我可以抑制它们的输出吗 以下是我的发布配置文件设置: 以下是升级前输出目录的外观: 现在,这里只是输出目录的一个片段: 简介:这个问题似乎源于.NETCore2.0 从你上面分享的图片。我知道您选择了依赖于框架的模式 在此模式下,生成的文件应与图1中的文件相同。如果您选择自包含模式,生成的文件应该与图片2中的文件相同

我刚刚将.NETCore2.0项目升级到2.2。据我所知,我没有更改任何其他设置,但现在当我发布到文件系统时,它会发布大量以前没有的文件夹和DLL

我需要发布它们吗?如果没有,我可以抑制它们的输出吗

以下是我的发布配置文件设置:

以下是升级前输出目录的外观:

现在,这里只是输出目录的一个片段:

简介:这个问题似乎源于.NETCore2.0

从你上面分享的图片。我知道您选择了依赖于框架的模式

在此模式下,生成的文件应与图1中的文件相同。如果您选择自包含模式,生成的文件应该与图片2中的文件相同

但在.NETCore2.0中,似乎有些不同。当我们在.net core2.0中发布项目时,或者像您一样从2.0升级时。我们必须显式地将self-contained属性设置为false,这样依赖于框架的模式才能正常工作

我需要发布它们吗

不,当您选择依赖于框架的模式时,不需要从自包含模式发布生成的文件

如果没有,我可以抑制它们的输出吗

以下是一个解决方法:

看起来您使用VS IDE发布它,发布时请确保选择“创建配置文件”。所以我们将有一个PublishProfile,我们可以在解决方案窗口的属性下面找到它。打开FolderProfile.pubxml并在
属性组中添加
true
。此外,我们还可以将
false
设置为true

之后,再次发布项目,问题就可以解决了

PublishProfiles的最终格式如下所示:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    ...
    <publishUrl>bin\Release\netcoreapp2.2\publish\</publishUrl>
    <DeleteExistingFiles>True</DeleteExistingFiles>
    <PublishWithAspNetCoreTargetManifest>true</PublishWithAspNetCoreTargetManifest>
  </PropertyGroup>
</Project>

...
bin\Release\netcoreapp2.2\publish\
符合事实的
符合事实的
此外:您可以从中找到更多信息。感谢natemcmaster。他的建议对我确实有用