Скопируйте файлы (файлы) из одного проекта в другой, используя событие post build... VS2010

У меня есть решение с тремя проектами. Мне нужно скопировать представление из одного проекта в другой. Я могу скопировать созданную DLL через события пост-сборки так:

enter image description here

Итак, я хочу скопировать файл в проекте один '/Views/ModuleHome/Index.cshtml' в папку в проекте 2. Как скопировать файл в мой желаемый проект через событие после сборки? Благодаря

Ответ 1

xcopy "$(ProjectDir)Views\Home\Index.cshtml" "$(SolutionDir)MEFMVCPOC\Views\Home"

и если вы хотите скопировать целые папки:

xcopy /E /Y "$(ProjectDir)Views" "$(SolutionDir)MEFMVCPOC\Views"

Обновление: здесь рабочая версия

xcopy "$(ProjectDir)Views\ModuleAHome\Index.cshtml" "$(SolutionDir)MEFMVCPOC\Views\ModuleAHome\" /Y /I

Вот некоторые обычно используемые переключатели с xcopy:

/I - treat as a directory if copying multiple files
/Q - Do not display the files being copied.
/S - Copy subdirectories unless empty.
/E - Copy empty subdirectories.
/Y - Do not prompt for overwrite of existing files.
/R - Overwrite read only files.

Ответ 2

xcopy "your-source-path" "your-destination-path" /D /y /s /r /exclude:path-to-txt- file\ExcludedFilesList.txt

Обратите внимание на кавычки в пути источника и пути назначения, но не на пути к tlud файлу exludelist.

Содержимое ExcludedFilesList.txt следующее:.cs\

Я использую эту команду для копирования файла из одного проекта в моем решении, в другой и исключения файлов .cs.

/D Copy only files that are modified in sourcepath
/y Suppresses prompting to confirm you want to overwrite an existing destination file.
/s Copies directories and subdirectories except empty ones.
/r Overwrites read-only files.

Ответ 3

xcopy "$ (TargetDir) * $(TargetExt)" "$ (SolutionDir)\Scripts\MigrationScripts\Library \" /F/R/Y/I

/F - отображает полное имя источника и целевого файла

/R - Это перезапишет файлы только для чтения

/Y - подавляет запрос на перезапись существующего файла (ов)

/I - Предполагается, что назначение - это каталог (но должен заканчиваться)

Маленький трюк - в цель вы должны закончиться символом \, чтобы сообщить xcopy, что цель - это каталог, а не файл!

Ответ 4

Вызвать Batch файл, который будет запускать Xcopy для источника необходимых файлов в пункт назначения

call "$(SolutionDir)scripts\copyifnewer.bat"

Ответ 5

Я использую его так.

xcopy "$(TargetDir)$(TargetName).dll" "$(SolutionDir)Lib\TIRM\x86\" /F /Y 
xcopy "$(TargetDir)$(TargetName).lib" "$(SolutionDir)Lib\TIRM\x86\" /F /Y 


/F : Copy source is File   
/Y : Overwrite and don't ask me

Обратите внимание на использование этого. $ (TargetDir) уже "\" "D:\MyProject\bin \" = $(TargetDir)

Вы можете найти макрос в редакторе команд

введите описание изображения здесь

Ответ 6

Как и предыдущие ответы, я также предлагаю xcopy. Однако я хотел бы добавить к Hallgeir Engen ответ с параметром /exclude. Кажется, что ошибка связана с параметром, препятствующим работе с именами путей, которые являются длинными или содержат пробелы, поскольку кавычки не будут работать. Имена путей должны находиться в формате "DOS" с "Documents", переводящим "DOCUME ~ 1" (согласно этот источник).

Итак, если вы хотите использовать параметр \exclude, существует обходное решение здесь:

cd $(SolutionDir)
xcopy "source-relative-to-path-above" "destination-relative-to-path-above
/exclude:exclude-file-relative-path

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

Ответ 7

Если вы хотите принять во внимание платформу (x64, x86 и т.д.) и конфигурация (отладка или выпуск), это будет примерно так:

xcopy "$(SolutionDir)\$(Platform)\$(Configuration)\$(TargetName).dll" "$(SolutionDir)TestDirectory\bin\$(Platform)\$(Configuration)\" /F /Y