在一次成功的构建中,我希望将输出目录的内容复制到同一“base”文件夹下的不同位置。这个父文件夹是一个相对的部分,可以根据源代码控制设置而变化。

我列出了一些对我有用的宏值…

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

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

我想复制输出目录的内容到以下文件夹:

D: \ GlobalDir \ \版本浏览器名称\ \ Solution2 \项目依赖

基本位置“D:\GlobalDir\Version\AppName”需要从上述宏之一获取。但是,没有一个宏值只列出父位置。

如何仅提取生成后副本命令的基本位置?


当前回答

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

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

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

希望能有所帮助 Rihan

其他回答

这是我的后构建脚本

创建我自己的自定义路径。包括库和版本。 复制.dll(目标文件) 复制*。md文件。

脚本:

md c:\_References\$(ProjectName)\$(AssemblyVersion)
xcopy $(ProjectDir)$(OutDir)$(TargetFileName) c:\_References\$(ProjectName)\$(AssemblyVersion) /y
xcopy $(ProjectDir)*.md c:\_References\$(ProjectName)\$(AssemblyVersion) /y

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

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

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

希望能有所帮助 Rihan

如果没有一个TargetDir或其他宏指向正确的位置,则使用".."目录来向后进入文件夹层次结构。

ie。使用$ (SolutionDir) \ \…获取基本目录。


所有宏的列表,见这里:

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

下面是你想在项目的Post-build事件命令行中添加的内容:

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

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

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

你可以试试:

$(SolutionDir)..\..\