Какая разница между Контентом и Нет при установке "Всегда копировать в выходной каталог"?

В файле csproj мы можем включить файл с помощью элемента None или Content. Из MSDN говорится, что:

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

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

Но так как элемент None или Content может содержать элемент CopyToOutputDirectory, поэтому мне интересно, установил ли это, что это Always, не будет ли поведение None и Content то же самое?

+6
источник поделиться
1 ответ

Не все, скопированное в ваш выходной каталог, устанавливая 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 содержит более подробную информацию о различных действиях сборки.

+4
источник

Посмотрите другие вопросы по меткам или Задайте вопрос