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

10

我注意到当我发布新的ASP.NET项目时,它会把所有非代码文件放在包的根目录中。例如,这些文件最终会出现在那里:

  • 发布配置文件
  • gulpfile.js

实际上没有必要将它们包含在发布文件夹中。在旧的解决方案中,只需修改文件属性即可将它们排除在外。现在属性做了完全不同的事情,并打开一个相当无用的对话框,您只能看到文件的路径。也许有别的方法可以做到?理想情况下,IDE应该足够聪明,不发布这些常见文件,但对于某些自定义内容,应该有一种排除它们的方式。

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

P.S. 可能提出的重复建议不同,因为它只涉及旧的项目/解决方案结构,而ASP.NET Core引入了一个新的结构,另一个解决方案不适用。


1
这并不完全是一个重复的问题,因为ASP.NET 5文件的结构是不同的,而且可能有其他适当的方法来解决它,特别是如果你考虑构建的话(据我所知,在打包到NuGet时会进行发布)。建议的重复问题是针对其他类型的项目/解决方案的。 - Ilya Chernomordik
确实不是这样。MVC5和ASP.NET5非常不同:微软的版本控制真的没有什么帮助。 - Richard
3个回答

10

默认情况下,包含 project.json 文件的目录中的所有代码文件都会被包括在项目中。您可以使用 project.json 中的 include/exclude 部分来控制此行为。

最常见的用于包含和排除文件的部分包括:

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

来自此处


如何排除一个文件夹?只是在“publishExclude”中写入文件夹名称似乎不起作用。 - A-Sharabiani
2
看起来在最新的RC2版本中有一些变化。publishExclude不再是一个选项。https://github.com/aspnet/Announcements/issues/175#include-structure - Shane Neuville
1
在RTM版本中,您可以使用publishOptions > excludeFiles。 - JGeerWM

0

假设您正在使用VS发布配置文件:

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

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

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


这似乎在新的 ASP.NET 5 上不太起作用,我尝试了以下做法:<ExcludeFilesFromDeployment> gulpfile.js </ExcludeFilesFromDeployment>, 但该文件仍然被复制了。 - Ilya Chernomordik
@IlyaChernomordik:我在Github上发布了一个问题=> https://github.com/aspnet/vsweb-publish/issues/73 - Gregory_Ott

0

我发现@Shane Neuville上面的评论是准确的。项目的json文件结构已经改变,现在我们应该使用“exclude”而不是“publishExclude”...这里有一个解释变化的文档以及我的project.json 文件部分现在看起来像:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接