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

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

Статья о свойствах файла в MSDN гласит:

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

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

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

3 ответа

Решение

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

Добавляет

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

в WpfApplication1_Content.g.cs, Читайте о AssemblyAssociatedContentFileAttribute,

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

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

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

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

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

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

введите описание здесь

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

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

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

содержание

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

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

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

При публикации на веб-сайте Azure с установленным флажком "Предварительная компиляция во время публикации" представления, для которых было действие сборки "Нет", не удалось разрешить в браузере из-за ошибки предварительной компиляции. После того, как я перевернул действие сборки на "Контент" и опубликовал, представления разрешились, как и ожидалось. Не знаю, как для 2 из 100 просмотров установлено значение "Нет".

Другие вопросы по тегам