148

我有一个包含 3 个项目的解决方案。我需要将视图从一个项目复制到另一个项目。我可以通过构建后事件复制创建的 DLL,如下所示:

在此处输入图像描述

所以我想将项目一“/Views/ModuleHome/Index.cshtml”中的文件复制到项目二中的文件夹中。如何通过构建后事件将文件复制到我想要的项目中?谢谢

4

8 回答 8

331
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 - 如果复制多个文件,则将其视为目录。
  • /Q - 不显示正在复制的文件。
  • /S - 复制子目录,除非为空。
  • /E - 复制空子目录。
  • /Y - 不提示覆盖现有文件。
  • /R - 覆盖只读文件。
于 2012-06-12T17:42:51.003 回答
23
xcopy "your-source-path" "your-destination-path" /D /y /s /r /exclude:path-to-txt- file\ExcludedFilesList.txt

注意源路径和目标路径中的引号,而不是 exludelist txt 文件的路径中的引号。

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.
于 2013-02-14T07:43:07.780 回答
14

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

/F – 显示完整的源和目标文件名

/R - 这将覆盖只读文件

/Y - 禁止提示覆盖现有文件

/I - 假设目标是目录(但必须以 结尾)

一个小技巧——在目标中你必须以字符 \ 结尾来告诉 xcopy 目标是目录而不是文件!

于 2015-07-20T07:18:12.867 回答
8

调用Batch文件,它将Xcopy为所需文件源运行到目标

call "$(SolutionDir)scripts\copyifnewer.bat"
于 2012-06-12T17:40:40.007 回答
8

我像这样使用它。

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)

您可以在命令编辑器中找到宏

在此处输入图像描述

于 2017-07-03T21:20:47.430 回答
5

这个命令对我来说就像一个魅力:

for /r "$(SolutionDir)libraries" %%f in (*.dll, *.exe) do @xcopy "%%f" "$(TargetDir)"

递归地将每个dllexe文件复制MySolutionPath\librariesbin\debugorbin\release中。

你可以在这里找到更多信息

于 2019-02-21T15:11:57.173 回答
3

和之前的回复一样,我也建议xcopy。但是,我想用/exclude参数添加到 Hallgeir Engen 的答案中。该参数似乎存在一个错误,阻止它使用长路径名或包含空格的路径名,因为引号不起作用。路径名需要采用“DOS”格式,“Documents”转换为“DOCUME~1”(根据this source)。

所以,如果你想使用 \exclude 参数,这里有一个解决方法

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

请注意,源路径和目标路径可以(并且应该,如果它们包含空格)在引号内,但不是排除文件的路径。

于 2017-04-08T17:25:25.650 回答
1

如果您想考虑平台(x64、x86 等)和配置(调试或发布),它将是这样的:

xcopy "$(SolutionDir)\$(Platform)\$(Configuration)\$(TargetName).dll" "$(SolutionDir)TestDirectory\bin\$(Platform)\$(Configuration)\" /F /Y 
于 2017-11-08T15:02:46.167 回答