Как исключить файлы из публикации в ASP.NET Core?

Я заметил, что когда я публикую новый проект ASP.NET, он помещает все файлы без кода в корневую папку в пакетах. Например. эти файлы там:

  • Опубликовать профили
  • gulpfile.js

Нет необходимости включать в опубликованную папку. В старых решениях было так же просто, как изменение свойств файлов, чтобы их исключить. Теперь свойства делают что-то совершенно другое и открывают совершенно бесполезный диалог, где вы можете видеть только путь к файлу. Возможно, можно сделать другой путь? В идеале IDE должна быть достаточно умна, чтобы не публиковать эти общие файлы, но для некоторых обычаев это должен быть способ их исключения.

Это, конечно, не такая большая проблема, что некоторые дополнительные файлы публикуются, но имеет смысл также исключить их.

P.S. Возможный предложенный дубликат не совпадает, поскольку он касается только старой структуры проекта/решения, в то время как ASP.NET Core вводит новую, где другое решение не применимо.

Ответ 1

По умолчанию все файлы кода в каталоге, содержащем project.json, включены в проект. Вы можете управлять этим с помощью включенных/исключаемых разделов project.json.

Наиболее распространенные разделы, которые вы увидите для включения и исключения файлов:

{
  "compile": "*.cs",
  "exclude": [
    "node_modules",
    "bower_components"
  ],
  "publishExclude": [
    "**.xproj",
    "**.user",
    "**.vspscc"
  ]
}
  • Раздел компиляции указывает, что будут скомпилированы только файлы .cs.
  • Раздел исключений исключает любые файлы в node_modules и bower_components. Даже если в разделах есть расширения .cs.
  • Раздел publishExclude позволяет исключать файлы из публиковать результаты своего проекта. В этом примере все .xproj,.user, и .vspscc файлы из вывода команды publish.

Отсюда

Ответ 2

Предполагая, что вы используете профили публикации VS:

Вы можете напрямую отредактировать файл .pubxml (это просто XML) для добавления элементов:

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

В каждом элементе содержится список имен папок или файлов, разделенных запятой (соответственно). Подстановочные знаки поддерживаются.

Ответ 3

Я обнаружил, что комментарий @Shane Neuville выше является точным. Структура файла project.json изменилась, и теперь вместо использования "publishExclude" мы должны использовать "exclude"... Вот ссылка на document объясняя изменение в дополнение к тому, что теперь выглядит в моем разделе файл project.json:

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