Что такое действие по созданию контента в Visual Studio?

Что делает действие по построению контента в Visual Studio? Похоже, что он ничего не делает.

Статья о свойствах файла на MSDN (больше не существует) гласит:

Content - файл не скомпилирован, но включен в группу вывода Content. Например, этот параметр является значением по умолчанию для веб файла.htm или другого типа.

Но я понятия не имею, что означает "группа вывода контента".

Это что-то о развертывании? Значит, действие не имеет реального эффекта при создании, но только позже при развертывании?

Ответ 1

Обновленная документация по Visual Studio имеет более содержательное описание:

Content - файл, помеченный как Content, может быть извлечен как поток, вызвав Application.GetContentStream. Для проектов ASP.NET эти файлы включаются как часть сайта при его развертывании.


Также после некоторого тестирования и с подсказкой из Каковы различные настройки "Build action" в свойствах проекта Visual Studio и что они делают? Я обнаружил, что действие сборки содержимого имеет такой эффект в проектах WPF (возможно, и в ASP).

Добавляет

[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("filename")]

к WpfApplication1_Content.g.cs. Прочитайте о AssemblyAssociatedContentFileAttribute.

В консольных приложениях или приложениях WinForms он ничего не делает (ни в исходном коде, ни в выходном двоичном файле).

Хотя в комментарии к ранее упомянутому вопросу есть примечание о влиянии на развертывание:

Также обратите внимание, что содержимое будет включено при использовании развертывания одним щелчком, но ничего не будет, даже если выбрано "копировать, если новее".

Возможно, это работает даже для консольных приложений и приложений WinForms (я не пробовал).

Ответ 2

"Содержимое" означает, что это элемент развертываемого проекта, он сигнализирует, что файл необходимо скопировать на целевой компьютер.

Что-то, что вы можете увидеть в простом режиме консольного режима. Project + Добавить новый элемент, выберите шаблон элемента Bitmap File. Его действие сборки автоматически устанавливается в "Содержимое". Используйте "Свойства проекта +", "Опубликовать" и нажмите кнопку "Файлы приложений". Обратите внимание, как битмап автоматически добавляется в список развернутых файлов:

enter image description here

Вернитесь в окно "Свойства" и измените его "Действие сборки" на "Нет". Нажмите кнопку еще раз и обратите внимание, как файл теперь больше не включен.

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

Ответ 3

Я думаю, что это относится только к проектам С#. См. Изображение:

Content

Если вы установите "Копировать каталог вывода" в "Копировать всегда" или "Копировать, если новый", он скопирует этот файл в выходную папку при сборке. Какие действия выполняются, когда вы нажимаете "Сборка (решение)" , зависит от свойства "Создать действие". Из того, что я понимаю на веб-сайте Microsoft, он просто копирует файл, если он является контентом, например текстом, html или другим нормальным файлом.

Другие Действия сборки не известны мне, это похоже на расширенный вариант.

В нижней строке: это похоже на функцию, которая помогает сохранять структуру папок и файлы, организованные каждой сборкой, поэтому она всегда готова к развертыванию. Надеюсь, это даст вам представление об этой функции.