10

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

  • 发布配置文件
  • gulpfile.js

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

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

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

4

3 回答 3

10

默认情况下,包含 project.json 的目录中的所有代码文件都包含在项目中。您可以使用 project.json 的包含/排除部分来控制它。

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

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

从这里

于 2015-12-18T10:37:56.097 回答
0

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

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

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

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

于 2015-12-18T09:49:12.967 回答
0

我发现@Shane Neuville 上面的评论是准确的。project.json 文件结构已经改变,现在,我们应该使用“exclude”,而不是使用“publishExclude”...除了我的 project.json 文件部分现在看起来像什么之外,这里是一个文档的链接,解释了这个变化

{
     "publishOptions": {
         "include": [
             "wwwroot",
             "**/*.cshtml",
             "appsettings.json",
             "appsettings.*.json",
             "web.config"
         ],
        "exclude": [
             "**/node_modules"
        ]
    }
}
于 2017-05-19T15:15:48.233 回答