【问题标题】:Copy file(s) from one project to another using post build event...VS2010使用构建后事件将文件从一个项目复制到另一个项目...VS2010
【发布时间】:2012-06-15 15:21:40
【问题描述】:

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

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

【问题讨论】:

    标签: c# visual-studio-2010


    【解决方案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 - 如果复制多个文件,则视为目录。
    • /Q - 不显示正在复制的文件。
    • /S - 复制子目录,除非为空。
    • /E - 复制空子目录。
    • /Y - 不提示覆盖现有文件。
    • /R - 覆盖只读文件。

    【讨论】:

    • 我将此行添加到我的后期构建中,我收到此错误“错误 1 ​​命令“xcopy”C:\Users\tcompton\Downloads\MEFMVCPOC\ModuleA\Views\ModuleAHome\Index.cshtml” "C:\Users\tcompton\Downloads\MEFMVCPOC\MEFMVCPOC\Views\ModuleAHome"" 以代码 2 退出。"这是什么意思?
    • 查看输出窗口:Ctrl+W+OViews\ModuleAHome 文件夹是否存在于目标位置?查看正在执行的确切命令的输出窗口,然后阅读 xcopy 命令的文档以了解可用的不同开关:xcopy /?
    • 文件夹 'Views\ModuleAHome' 存在,但它不是目标项目的一部分,这意味着您必须单击“显示所有文件”才能使其出现在 VS 中。
    • 我不认为目标文件夹不是目标项目的一部分这一事实对 xcopy 有任何影响。此命令直接对文件系统进行操作。就使该文件夹显示为目标项目的一部分而言,自动执行此任务可能会更加困难。
    • 知道了... xcopy "$(ProjectDir)Views\ModuleAHome\Index.cshtml" "$(SolutionDir)MEFMVCPOC\Views\ModuleAHome\" /Y /I....这篇文章有帮助连同您的输入social.msdn.microsoft.com/Forums/uk/csharpgeneral/thread/…
    【解决方案2】:

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

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

    递归地将每个dllexe文件从MySolutionPath\libraries复制到bin\debugbin\release

    您可以在here找到更多信息

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 这在平台是任何 CPU 时不起作用。您应该改用 $(OutDir)。
      【解决方案4】:

      我就是这样用的。

      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)

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

      【讨论】:

      • @HarshilDoshi 项目 → 项目属性 → 构建事件 → PostBuildEvent
      【解决方案5】:

      和之前的回复一样,我也建议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
      

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

      【讨论】:

        【解决方案6】:

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

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

        /R - 这将覆盖只读文件

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

        /I – 假设目的地是目录(但必须以 结尾)

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

        【讨论】:

          【解决方案7】:
          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.
          

          【讨论】:

          • 谢谢。 /exclude: 在向your-source-pathyour-destination-path 添加引号后起作用。没有这些引号,它根本不起作用。
          • @AechoLiu 如果您的文件路径有空格,则始终需要引号 e。 G。 "My File.txt".
          【解决方案8】:

          调用 Batch 文件,该文件将运行 Xcopy 以获取所需的文件源到目标

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

          【讨论】:

            猜你喜欢
            • 2021-11-22
            • 1970-01-01
            • 2019-09-14
            • 2018-03-24
            • 1970-01-01
            • 2012-01-13
            • 1970-01-01
            • 1970-01-01
            • 2011-09-08
            相关资源
            最近更新 更多