【发布时间】:2012-06-15 15:21:40
【问题描述】:
我有一个包含 3 个项目的解决方案。我需要将视图从一个项目复制到另一个项目。我可以通过构建后事件复制创建的 DLL,如下所示:
所以我想将项目一“/Views/ModuleHome/Index.cshtml”中的文件复制到项目二的文件夹中。 如何通过构建后事件将文件复制到所需的项目?谢谢
【问题讨论】:
标签: c# visual-studio-2010
我有一个包含 3 个项目的解决方案。我需要将视图从一个项目复制到另一个项目。我可以通过构建后事件复制创建的 DLL,如下所示:
所以我想将项目一“/Views/ModuleHome/Index.cshtml”中的文件复制到项目二的文件夹中。 如何通过构建后事件将文件复制到所需的项目?谢谢
【问题讨论】:
标签: c# visual-studio-2010
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 - 覆盖只读文件。
【讨论】:
Ctrl+W+O。 Views\ModuleAHome 文件夹是否存在于目标位置?查看正在执行的确切命令的输出窗口,然后阅读 xcopy 命令的文档以了解可用的不同开关:xcopy /?。
这个命令对我来说就像一个魅力:
for /r "$(SolutionDir)libraries" %%f in (*.dll, *.exe) do @xcopy "%%f" "$(TargetDir)"
它递归地将每个dll和exe文件从MySolutionPath\libraries复制到bin\debug或bin\release。
您可以在here找到更多信息
【讨论】:
如果您想考虑平台(x64、x86 等)和配置(调试或发布),应该是这样的:
xcopy "$(SolutionDir)\$(Platform)\$(Configuration)\$(TargetName).dll" "$(SolutionDir)TestDirectory\bin\$(Platform)\$(Configuration)\" /F /Y
【讨论】:
【讨论】:
和之前的回复一样,我也建议xcopy。但是,我想用 /exclude 参数添加到 Hallgeir Engen 的答案中。该参数似乎存在一个错误,阻止它使用长路径名或包含空格的路径名,因为引号不起作用。路径名需要采用“DOS”格式,“Documents”转换为“DOCUME~1”(根据this source)。
所以,如果你想使用 \exclude 参数,有一个解决方法here:
cd $(SolutionDir)
xcopy "source-relative-to-path-above" "destination-relative-to-path-above
/exclude:exclude-file-relative-path
请注意,源和目标路径可以(并且应该,如果它们包含空格)在引号内,但不是排除文件的路径。
【讨论】:
xcopy "$(TargetDir)*$(TargetExt)" "$(SolutionDir)\Scripts\MigrationScripts\Library\" /F /R /Y /I
/F – 显示完整的源和目标文件名
/R - 这将覆盖只读文件
/Y - 禁止提示覆盖现有文件
/I – 假设目的地是目录(但必须以 结尾)
一个小技巧——在目标中你必须以字符 \ 结尾来告诉 xcopy 目标是目录而不是文件!
【讨论】:
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.
【讨论】:
your-source-path 和your-destination-path 添加引号后起作用。没有这些引号,它根本不起作用。
"My File.txt".
调用 Batch 文件,该文件将运行 Xcopy 以获取所需的文件源到目标
call "$(SolutionDir)scripts\copyifnewer.bat"
【讨论】: