首页 文章

Visual Studio Post Build事件 - 复制到相对目录位置

提问于
浏览
196

在成功构建时,我希望将输出目录的内容复制到同一 "base" 文件夹下的其他位置 . 此父文件夹是相对部分,可以根据“源代码管理”设置而有所不同 .

我列出了一些可供我使用的宏值...

$(SolutionDir)= D:\GlobalDir\Version\AppName \ Solution1 \ build

$(ProjectDir)= D:\GlobalDir\Version\AppName \ Solution1 \ Version \ ProjectA \

我想将Output Dir内容复制到以下文件夹:

D:\GlobalDir\Version\AppName \ Solution2 \ Project \ Dependency

需要从上述宏之一获取基本位置"D:\GlobalDir\Version\AppName" . 但是,没有宏值列出 only 父位置 .

如何提取 only post build copy命令的基本位置?

5 回答

  • 242

    如果TargetDir或其他宏都没有指向正确的位置,请使用“..”目录向后向上移动文件夹层次结构 .

    即 . 使用 $(SolutionDir)\..\.. 获取基目录 .


    有关所有宏的列表,请参见此处:

    http://msdn.microsoft.com/en-us/library/c02as0cs.aspx

  • 9

    以下是您要在项目的Post-build事件命令行中添加的内容:

    copy /Y "$(TargetDir)$(ProjectName).dll" "$(SolutionDir)lib\$(ProjectName).dll"
    

    编辑:或者如果您的目标名称与项目名称不同 .

    copy /Y "$(TargetDir)$(TargetName).dll" "$(SolutionDir)lib\$(TargetName).dll"
    
  • 39

    你可以尝试:

    $(SolutionDir)..\..\
    
  • 4

    我认为这是相关的,但是直接使用 msbuild 命令行(来自批处理文件)与VS内部构建时出现问题 .

    使用类似以下内容:

    <PostBuildEvent>
      MOVE /Y "$(TargetDir)something.file1" "$(ProjectDir)something.file1"
      start XCOPY /Y /R "$(SolutionDir)SomeConsoleApp\bin\$(ConfigurationName)\*" "$(ProjectDir)App_Data\Consoles\SomeConsoleApp\"
    </PostBuildEvent>
    

    (注意: start XCOPY 而不是 XCOPY 用于解决阻止复制的权限问题)

    从批处理文件执行msbuild时,宏 $(SolutionDir) 评估为 ..\ ,导致 XCOPY 命令失败 . 从Visual Studio内部构建时,它工作正常 . 使用 /verbosity:diagnostic 确认以查看评估的输出 .

    使用宏 $(ProjectDir)..\ 代替相同的东西,工作正常,并在两个构建方案中保留完整路径 .

  • 164

    直接使用msbuild没有意义吗?如果你在每次构建时都这样做,那么你可以在最后添加一个msbuild任务吗?如果您只是想查看是否找不到Visual Studio IDE中未显示的其他宏值,则可以将msbuild选项切换为诊断,并显示可以使用的所有变量,如以及他们目前的 Value .

    要在visual studio中打开它,请转到工具/选项,然后向下滚动树视图到“项目和解决方案”部分,展开它并单击“构建并运行”,在右侧它们是指定构建输出详细程度的下拉列表,将其设置为诊断,将显示您可以使用的其他宏值 .

    因为我不太了解您想要达到什么级别,以及您希望构建的复杂程度如何,这可能会让您有所了解 . 我最近一直在做构建脚本,甚至在构建过程中执行SQL代码 . 如果您想要更多帮助甚至是一些示例构建脚本,请告诉我,但如果它只是一个小型进程,您希望在构建结束时运行,那么整个msbuild脚本可能会有点过度杀死 .

    希望它能帮助Rihan

相关问题