如何排除文件在 ASP.NET Core 中发布?

How to exclude files from being published in ASP.NET Core?

我注意到当我发布新的 ASP.NET 项目时,它会将所有非代码文件放在 packages 的根文件夹中。例如。这些文件在那里结束:

没有必要将它们包含在发布的文件夹中。在旧的解决方案中,它就像修改文件的属性以排除它们一样简单。现在属性做一些完全不同的事情并打开一个非常无用的对话框,您只能在其中看到文件的路径。也许有可能做一些其他的方式?理想情况下,IDE 应该足够聪明,不会发布这些常见文件,但对于某些自定义,它应该是一种排除它们的方法。

发布一些额外的文件当然不是什么大问题,但排除它们也是有意义的。

P.S。可能提出的重复是不一样的,因为它只处理旧的 project/solution 结构,而 ASP.NET Core 引入了一个新的结构,其他解决方案不适用。

假设您使用的是 VS 发布配置文件:

您可以直接编辑.pubxml文件(就是XML)来添加元素:

<ExcludeFoldersFromDeployment>
  images;document
</ExcludeFoldersFromDeployment>
<ExcludeFilesFromDeployment>
  mystyle.css
</ExcludeFilesFromDeployment>

其中每个元素都包含一个以分号分隔的文件夹或文件名列表(分别)。支持通配符。

默认情况下,包含 project.json 的目录中的所有代码文件都包含在项目中。您可以使用 project.json.

的 include/exclude 部分来控制它

您将看到的包含和排除文件的最常见部分是:

{
  "compile": "*.cs",
  "exclude": [
    "node_modules",
    "bower_components"
  ],
  "publishExclude": [
    "**.xproj",
    "**.user",
    "**.vspscc"
  ]
}
  • 编译部分指定仅编译 .cs 文件。
  • 排除部分排除了 node_modules 和 bower_components 个目录。即使部分具有 .cs 扩展名。
  • publishExclude 部分允许您从 发布项目的输出。在此示例中,所有 .xproj、.user、 和 .vspscc 文件来自发布命令的输出。

From here

我发现@Shane Neuville 上面的评论是准确的。 project.json 文件结构已经改变,现在,我们应该使用 "exclude" 而不是 "publishExclude"...这里还有一个 link 到 document explaining the change我的 project.json 文件部分现在的样子:

{
     "publishOptions": {
         "include": [
             "wwwroot",
             "**/*.cshtml",
             "appsettings.json",
             "appsettings.*.json",
             "web.config"
         ],
        "exclude": [
             "**/node_modules"
        ]
    }
}