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

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

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

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

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

<强> d:\ GlobalDir \版\ AppName的 \溶液2 \项目\依赖

基本位置“D:\ GlobalDir \ Version \ AppName”需要从上面的一个宏中获取。但是,没有任何宏值列出父位置。

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

有帮助吗?

解决方案

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

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


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

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

其他提示

以下是您希望在项目的构建后事件命令行中添加的内容:

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

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

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

你可以尝试:

$(SolutionDir)..\..\

我认为这是相关的,但是在使用 msbuild 命令行(从批处理文件)直接构建VS而在VS中构建时,我遇到了问题。

使用以下内容:

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

(注意:启动XCOPY 而非 XCOPY 用于解决阻止复制的权限问题)

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

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

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

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

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

希望它有所帮助 Rihan

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top