Полагаю, FilesToCopyToOutput
- это имя, которое вы дали коллекции элементов, и вопрос в том, как помешать старому компилятору F # думать, что он с этим справится?
Я подозреваю, что вы хотите сделать, хотяобрабатывать всю папку как содержимое элементов и копировать их в выходную папку:
<Content Include="additionalData\**\*.*">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
Копировать задачу
Если вы хотитекопировать элементы с помощью задачи MSBuild, которую вы можете использовать Копировать .Вы должны иметь возможность написать:
<ItemGroup>
<MyAdditionalData Include="additionalData\**\*.*" />
</ItemGroup>
<Target Name="CopyFiles">
<Copy
SourceFiles="@(MyAdditionalData)"
DestinationFolder="$(OutputPath)"
/>
</Target>
Атрибут Include
позволяет выбрать несколько файлов , которые можно использовать в качестве аргументов для задачи.Exclude
используется для исключения файлов.Вы также можете указать атрибут Condition
, например, чтобы запускать задачу только для конфигурации Release или Debug.$(OutputPath)
- это одно из свойств MSBuild , которое можно использовать в путях.
Как: исключать файлы из сборки показывает, как можно объединить все эти атрибутыдля обработки определенных элементов в каталоге, например:
<JPGFile
Include="Images\**\*.jpg"
Exclude = "Images\**\Version2\*.jpg"/>
Это будет включать все файлы в каталоге Images
, за исключением файлов в Version2
Использование событий после сборки
Большинство людей, хотя не не использовали MSBuild до последнего упрощенного формата.Наиболее распространенный способ копирования файлов после сборки - это использование события после сборки со страниц свойств проекта, например:
xcopy $(ProjectDir)additionalData\*.* $(TargetDir) /s /e
$(ProjectDir)
и $(TargetDir)
являются заменяющими макросамиэто указывает на папку проектов и выходную папку.Список всех макросов доступен в Диалоговое окно командной строки события до / после сборки .