Есть ли способ сделать это? Мне просто нужно скопировать один файл и подумать, что может быть некоторый синтаксис для параметра SourceFiles задачи Copy, что означает, что вам не нужно заранее определять элементную группу, я бы предпочел придерживаться ItemGroup, чем использовать Exec.Скопируйте один файл в MSBuild без использования Exec или ItemGroup
4
A
ответ
15
Копирование файлов также имеет прямую PropertyGroup в качестве входных данных:
<PropertyGroup>
<SourceFile>Some file</SourceFile>
</PropertyGroup>
<Copy SourceFiles="$(SourceFile)" DestinationFolder="c:\"/>
или даже просто строку
<Copy SourceFiles="Pathtofile" DestinationFolder="c:\"/>
4
Просто поместите имя одного файла в качестве значения для «исходников,». Easy-Peezey.
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="AllTargetsWrapper" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WorkingCheckout>.</WorkingCheckout>
</PropertyGroup>
<Target Name="AllTargetsWrapper">
<CallTarget Targets="CopyItTarget" />
</Target>
<Target Name="CopyItTarget">
<Copy SourceFiles="c:\windows\system.ini" DestinationFolder="$(WorkingCheckout)\"/>
<Error Condition="!Exists('$(WorkingCheckout)\system.ini')" Text="No Copy Is Bad And Sad" />
</Target>
</Project>
+0
Это действительно покрыто второй частью ответа Джеймса выше, спасибо, хотя! – Shaun
0
Для чего это необходимо, мне нужно было сделать то же самое и захотелось поместить некоторую информацию о версии в имя файла. Вот как я это сделал для проекта в $ (SolutionDir), который ссылается на исполняемый файл, созданный другим проектом в другом решении, что я легко могу выразить путь к:
<Target Name="AfterBuild">
<GetAssemblyIdentity AssemblyFiles="$(SolutionDir)..\bin\$(Configuration)\SomeExectuable.exe">
<Output TaskParameter="Assemblies" ItemName="AssemblyVersions" />
</GetAssemblyIdentity>
<CreateProperty Value="$(TargetDir)$(TargetName)-%(AssemblyVersions.Version)$(TargetExt)">
<Output TaskParameter="Value" PropertyName="NewTargetPath" />
</CreateProperty>
<Copy SourceFiles="$(TargetPath)" DestinationFiles="$(NewTargetPath)" />
</Target>
Смежные вопросы
- 1. MSBuild Работа с командой ItemGroup и EXEC
- 2. msbuild itemgroup items
- 3. Создание ItemGroup строк в MSBuild
- 4. SvnCommit (контекст MSBuild) пропускает один файл из ItemGroup
- 5. MSBuild - ItemGroup пересечение
- 6. Пустой MSBuild ItemGroup
- 7. Изменить MSBuild ItemGroup Метаданные
- 8. Может ли MSBuild ItemGroup быть разбитым?
- 9. Удалить каталог из MSBuild ItemGroup
- 10. Преобразование разделительной строки в массив или ItemGroup
- 11. MSBUILD, работающий с повторяющимися элементами в ItemGroup
- 12. Скопируйте один файл tar.gz без scp (используя эхо или cat)
- 13. MSBuild - сохранить ItemGroup в отдельном файле
- 14. Как преобразовать MsBuild ItemGroup в PropertyGroup?
- 15. MSBuild: звездочки и странные ItemGroup Исключить поведение
- 16. msbuild create itemgroup из группы свойств
- 17. MSBuild ItemGroup Include/Exclude pattern issue
- 18. Msbuild ItemGroup неожиданно скопирует файлы для копирования
- 19. MSBuild Pivoting ItemGroup на строку с разделителями
- 20. В MSBuild, в чем разница между PropertyGroup и ItemGroup
- 21. MsBuild запустить Exec для каждого элемента в списке
- 22. Задача MsBuild не помещает собственный вывод C++ в TargetOutputs ItemGroup
- 23. скопируйте файл из HDFS в локальную систему без использования sudo
- 24. Exec powershell.exe зависает msbuild
- 25. MSBuild условный Exec?
- 26. ItemGroup включает файлы с условием
- 27. Скопируйте все файлы и папки с помощью msbuild
- 28. Подавление вывода с задачей Exec в msbuild
- 29. Как использовать преобразование MSBuild, когда файлы ItemGroup имеют одинаковые имена?
- 30. Запуск списка MySQL-запросов без использования exec()
Это помогло мне автоматизировать создание сети. config для проекта библиотеки WCF, размещенного в IIS. :) – Achilles