Каковы различные настройки "Создание действия" в свойствах проекта Visual Studio и что они делают?

По большей части вы просто берете все, что Visual Studio устанавливает для вас как по умолчанию... Я имею в виду BuildAction свойство для каждого файла, выбранного в обозревателе решений. Существует несколько вариантов, и трудно понять, что будет делать каждый из них.

Ответ 1

  • Нет. Файл не включен в группу вывода проекта и не компилируется в процессе сборки. Примером может служить текстовый файл, содержащий документацию, такую как файл Readme.

  • Компиляция: файл компилируется в вывод сборки. Этот параметр используется для файлов кода.

  • Содержимое. Позволяет получить файл (в том же каталоге, что и сборка), в качестве потока через Application.GetContentStream(URI). Чтобы этот метод работал, ему нужен пользовательский атрибут AssemblyAssociatedContentFile, который Visual Studio любезно добавляет, когда вы помечаете файл как "Контент",

  • Встроенный ресурс: внедряет файл в ресурс манифеста эксклюзивных сборок.

  • Ресурс (только WPF): внедряет файл в общий (по всем файлам в сборке с аналогичной настройкой) ресурс манифеста сборки с именем AppName.g.resources.

  • Page (WPF только): Используется для компиляции xaml файл в baml. Затем baml внедряется в тот же метод, что и Resource (т.е. доступен как "AppName.g.resources")

  • ApplicationDefinition (только для WPF): пометьте файл XAML/class, который определяет ваше приложение. Вы указываете код с положением x: class= "Namespace.ClassName" и задаете начальную форму/страницу с помощью StartupUri = "Window1.xaml"

  • SplashScreen (только для WPF): изображение, помеченное как SplashScreen , отображается автоматически при загрузке приложения WPF, а затем исчезает

  • DesignData: компилирует модели просмотра XAML, чтобы пользовательские элементы управления могли просматриваться с образцами данных в Visual Studio (используются макетные типы)

  • DesignDataWithDesignTimeCreatableTypes: компилирует модели просмотра XAML, чтобы пользовательские элементы управления могли просматриваться с образцами данных в Visual Studio (использует фактические типы)

  • EntityDeploy: (Entity Framework): используется для развертывания артефактов Entity Framework

  • CodeAnalysisDictionary: XML файл, содержащий пользовательский словарь слов для правил орфографии

Ответ 2

Из документации:

Свойство BuildAction указывает что Visual Studio делает с файлом когда выполняется сборка. BuildAction может иметь одно из нескольких значений:

Нет. Файл не включен в группы проекта и не скомпилированный в процессе сборки. пример - текстовый файл, содержащий документацию, такую ​​как файл Readme.

Скомпилировать - файл скомпилирован в выход сборки. Эта настройка используется для файлов кода.

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

Вложенный ресурс - этот файл встроенный в основную сборку проекта как DLL или исполняемый файл. это обычно используется для файлов ресурсов.

Ответ 3

Страница - принимает указанный файл XAML и компилируется в BAML и вставляет этот вывод в поток управляемых ресурсов для вашей сборки (в частности, AssemblyName.g.resources). Кроме того, если у вас есть соответствующие атрибуты в корневом XAML элемент в файле, он создаст файл blah.g.cs, который будет содержать частичный класс "codebehind" для этой страницы; это в основном связано с вызовом BAML goop, чтобы повторно убрать файл в память и установить любую из переменных-членов вашего класса в созданные сейчас элементы (например, если вы поместите x: Name= "foo" на item, вы сможете сделать this.foo.Background = Purple или аналогичный.

ApplicationDefinition - аналогично странице, за исключением того, что она идет onestep furthur, и определяет точку входа для вашего приложения, которая будет создавать экземпляр вашего объекта приложения, запускать вызов на нем, который затем создает экземпляр типа, установленного свойством StartupUri, и будет дайте свое главное окно.

Кроме того, чтобы быть ясным, этот вопрос в целом наполняется набором результатов; любой может определить дополнительные функции BuildActions, просто создав задачу MSBuild. Если вы посмотрите в каталоге% systemroot%\Microsoft.net\framework\v {version}\и посмотрите файл Microsoft.Common.targets, вы сможете расшифровать еще много (например, с помощью VS Pro и выше, существует действие "Тень", которое позволяет создавать частные помощники, чтобы помочь с индивидуальным тестированием частных классов.

Ответ 4

VS2010 имеет свойство "Build Action", а также "Копировать в выходной каталог". Таким образом, действие "Нет" все равно будет скопировано в каталог сборки, если для свойства copy установлено значение "Копировать, если новый" или "Копировать всегда".

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

Я использовал настройку "Build Action" для параметра "None" и "Copy to Output Direcotry" "Копировать, если новый" для некоторых связанных с внешней связью .config.

G.

Ответ 5

В VS2008 запись doc, которая кажется наиболее полезной, выглядит так:

Windows Presentation Foundation Создание WPF-приложения (WPF)

мс-помощь://MS.VSCC.v90/MS.MSDNQTR.v90.en/wpf_conceptual/html/a58696fd-bdad-4b55-9759-136dfdf8b91c.htm

ApplicationDefinition  Идентифицирует файл разметки XAML, содержащий определение приложения (файл разметки XAML, корневым элементом которого является приложение). ApplicationDefinition является обязательным, если Install is true, а OutputType - winexe. Приложение WPF и, следовательно, проект MSBuild могут иметь только одно ApplicationDefinition.

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

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

Window (System.Windows..::.Window).

Page (System.Windows.Controls..::.Page).

PageFunction (System.Windows.Navigation..::.PageFunction<(Of <(T>)>)).

ResourceDictionary (System.Windows..::.ResourceDictionary).

FlowDocument (System.Windows.Documents..::.FlowDocument).

UserControl (System.Windows.Controls..::.UserControl).

Ресурсный  Идентифицирует файл ресурсов, который скомпилирован в сборку приложения. Как упоминалось ранее, UICulture обрабатывает элементы ресурсов.

Содержание  Определяет файл содержимого, который распространяется вместе с приложением. Метаданные, которые описывают файл содержимого, скомпилируются в приложение (используя AssemblyAssociatedContentFileAttribute).

Ответ 6

Как насчет этой страницы из Microsoft Connect (объясняя типы DesignData и DesignDataWithDesignTimeCreatableTypes). Цитирование:

Ниже описываются два файла сборки для файлов Sample Data.

Образцам данных .xaml файлов должно быть присвоено одно из следующих действий по созданию:

DesignData​​strong > . Примеры типов данных будут созданы как типы faux. Используйте это действие сборки, когда образцы данных не являются пригодными для создания или имеют свойства только для чтения, для которых вы хотите определить значения выборочных данных для.

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

Не так невероятно исчерпывающий, но, по крайней мере, дает подсказку. Это прохождение в MSDN также дает некоторые идеи. Я не знаю, применимы ли эти действия для проектов не для Silverlight.

Ответ 7

  • Подделки: Часть платформы Microsoft Fakes (Unit Test Isolation). Не доступен для всех версий Visual Studio. Подделки используются для поддержки модульного тестирования в вашем проекте, помогая вам изолировать тестируемый код, заменяя другие части приложения заглушками или прокладками. Подробнее здесь: https://msdn.microsoft.com/en-us/library/hh549175.aspx