【发布时间】:2013-02-27 23:55:54
【问题描述】:
我有一个用于 TFS 2010(构建服务器)构建任务的解决方案。
大多数项目都可以放在同一个位置,唯一的区别是一些动态加载的插件,它们应该在 /Plugins 相对于其他程序集的子文件夹中。
1) 我尝试了一些方法,比如修改我的 DefaultTemplate.xaml,结果发现(因为我只指定了 .sln 文件)我无法区分每个项目级别的输出路径。 (在工作流程中,有一个带有 serverBuildProjectItem 变量的“对于 BuildSettings.ProjectsToBuild 中的每个项目” - 尽管将 .sln 文件作为我的项目,但这仅被调用一次。)所以这不能区分每个项目基础。
2) 我尝试的另一件事是指定在某处找到的 OutputPath 作为解决方案。
<OutputPath Condition=" '$(CommonOutputPath)'=='' ">../myOutDir/Plugins/</OutputPath>
<OutputPath Condition=" '$(CommonOutputPath)'!='' ">$(CommonOutputPath)Plugins\</OutputPath>
这会将所有程序集留在服务器构建的同一文件夹中,因此不起作用。
3) 我开始创建构建后事件以手动将文件复制到正确的位置,但到目前为止未能区分服务器案例和本地案例。 (这里不行。)
<PropertyGroup Condition=" ' $(TeamBuildConstants) ' == ' '>
<PostBuildEvent>mkdir $(SolutionDir)..\out\$(OutDir)plugins
copy $(TargetPath) $(SolutionDir)..\out\$(OutDir)plugins
</PropertyGroup>
<PropertyGroup Condition=" ' $(TeamBuildConstants) ' == '_TEAM_BUILD_ '>
echo figure out some copying for this once the condition gets hit..
<PostBuildEvent></PostBuildEvent>
</PropertyGroup>
如何更改项目文件或配置构建工作流程以完成这项工作? (然后应该在本地以及服务器构建中工作。)
我想要的: 所有标准程序集都在同一个文件夹中,所有插件项目都在 ./Plugins/ 子文件夹中吗? (本地,相对于项目文件(默认?),tfs-build 相对于指定的放置位置)
【问题讨论】: