Какая разница между Контентом и Нет при установке "Всегда копировать в выходной каталог"?
В файле csproj мы можем включить файл с помощью элемента None
или Content
. Из MSDN говорится, что:
Нет. Файл не включен в группу вывода проекта и не является скомпилированный в процессе сборки. Примером может служить текстовый файл, содержащий документацию, такую как файл Readme.
Содержимое. Файл не скомпилирован, но включен в Содержимое вывода. Например, этот параметр является значением по умолчанию для .htm или другой вид веб файла.
Но так как элемент None
или Content
может содержать элемент CopyToOutputDirectory
, поэтому мне интересно, установил ли это, что это Always
, не будет ли поведение None
и Content
то же самое?
Не все, скопированное в ваш выходной каталог, устанавливая CopyToOutputDirectory
, копируется в группу вывода контента. Поэтому вы можете сделать это:
File1---CopyToOutputDirectory = Copy always, Content
File2---CopyToOutputDirectory = Copy always, Content
File3---CopyToOutputDirectory = Copy always, None
Все три файла будут скопированы в выходной каталог, но только File1
и File2
будут скопированы в Content Output Group.
Кроме того, Content
позволяет вам извлечь файл (в том же каталоге, что и сборка) в качестве потока через Application.GetContentStream(URI)
. Чтобы этот метод работал, ему нужен настраиваемый атрибут AssemblyAssociatedContentFile
, который Visual Studio добавляет, когда вы помечаете файл как Content
.
None
и Content
- значения для того, как файл относится к процессу сборки и развертывания. Таким образом, ваша сборка (например, MS Build) и развертывание могут отличаться от простое удаление файлов из выходного каталога. У вас может быть файл .bat, который вам действительно не нужен в выходном каталоге, но вам нужно его для развертывания.
Этот ответ SO содержит более подробную информацию о различных действиях сборки.
Связанные вопросы
Похожие вопросы
Посмотрите другие вопросы по меткам c# .net visual-studio msbuild или Задайте вопрос