我有一个用于 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 相对于指定的放置位置)