为什么.Net Core 2.2现在会发布大量其他dll

时间:2019-02-14 01:34:03

标签: msbuild visual-studio-2017 asp.net-core-2.2

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

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

这是我的发布个人资料设置: enter image description here

这是升级之前输出目录的样子: enter image description here

现在,这只是输出目录的摘要: enter image description here

1 个答案:

答案 0 :(得分:1)

  

简介:此问题似乎是由.net core 2.0引起的。

从上面分享的图片中获取。我知道您选择框架依赖模式。

在此模式下,生成的文件应与picture1中的文件类似。而且,如果您选择自包含模式,则生成的文件应该与picture2中的文件类似。

但是在.net core2.0中,似乎有些不同。当我们在.net core2.0中发布项目,或像您一样从2.0升级时。我们必须将自包含属性显式设置为false,以便框架依赖模式可以正常工作。

  

我需要发布它们吗?

否,选择框架相关模式时,您无需以自包含模式发布生成的文件。

  

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

这是一种解决方法:

看起来像您使用VS IDE进行发布,发布时请确保选择“创建配置文件”。因此,我们将拥有一个PublishProfile,可以在“解决方案”窗口中的“属性”下找到它。打开FolderProfile.pubxml并将<PublishWithAspNetCoreTargetManifest>true</PublishWithAspNetCoreTargetManifest>添加到PropertyGroup中。另外,我们可以将<DeleteExistingFiles>false</DeleteExistingFiles>设置为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>

此外:您可以从this issue中找到更多信息。感谢natemcmaster。他的建议确实对我有用。