我没有尝试TeamCity,但确实为我们的新BizTalk项目设置了构建环境。
继Sayed Ibrahim Hashimimy own question before starting out的优秀建议后,我创建了一套MSBuild .proj和.targets脚本。
核心
您要执行实际构建步骤中央.targets脚本:
<Project DefaultTargets="Deploy" xmlns="...">
<!-- omitted validation steps, see referenced post for details -->
<PropertyGroup>
<PullDependsOn>
$(ValidateDependsOn);
Validate;
</PullDependsOn>
</PropertyGroup>
<PropertyGroup>
<BuildDependsOn>
$(PullDependsOn);
PullFromVersionControl;
</BuildDependsOn>
</PropertyGroup>
<PropertyGroup>
<DeployDependsOn>
$(BuildDependsOn);
Build;
</DeployDependsOn>
</PropertyGroup>
<Target Name="PullFromVersionControl" DependsOnTargets="$(PullDependsOn)">
<Exec Command="..." />
</Target>
<Target Name="Build" DependsOnTargets="$(BuildDependsOn)">
<MSBuild Projects="@(ProjectsToBuild)" />
</Target>
<Target Name="Deploy" DependsOnTargets="$(DeployDependsOn)">
<Exec Command="..." />
</Target>
</Project>
第二核心部分是像你找到他们在您的.csproj配置目标文件
<Project xmlns="...">
<PropertyGroup Condition=" '$(Environment)' == 'DEV' ">
<SomeConfigKey Condition=" '$(SomeConfigKey)' == '' ">Foo</SomeConfigKey>
</PropertyGroup>
<PropertyGroup Condition=" '$(Environment)' == 'TEST' ">
<SomeConfigKey Condition=" '$(SomeConfigKey)' == '' ">Bar</SomeConfigKey>
</PropertyGroup>
</Project>
项目
单个.csproj本身由a.targets文件表示,只有您需要构建的一组ItemGroups。
<Project xmlns="...">
<ItemGroup>
<!-- this group contains the list of items to pull from version control -->
<Sources Include="@(Sources)" />
<Sources Include="MyProjectRootDir" />
<Sources Include="MyDependentProjectRootDir" />
</ItemGroup>
<ItemGroup>
<ProjectsToBuild Include="@(ProjectsToBuild)" />
<ProjectsToBuild Include="MyProject.csproj" />
</ItemGroup>
</Project>
将其组合在一起
你居然会用的MSBuild执行将导入您的配置.proj,您的项目(源代码文件)和Core(拉,构建和部署命令)
<Project DefaultTargets="Deploy" xmlns="...">
<Import Project="Config.targets"/>
<Import Project="Project.targets"/>
<Import Project="Core.targets"/>
</Project>
使用这种方法,我能够重用包含源代码来构建我的一些50个项目在许多不同的组合,而不是建立VS解决方案组他们.targets。
我希望你会发现这个有用的 - 如果你有兴趣,我可以添加更多的细节。
我的解决方案是否适合您,还是您更专注于TeamCity? – Filburt 2010-06-21 12:25:28
@Filburt - 对不起..有偏差/需要更多的时间来实践Sayed的博客文章 - 我想我正在寻找的是''任务。从主脚本中分叉msbuild。我的主要需求是避免在构建脚本中重复解决方案/ proj配置,但仍然能够添加前/后构建定制任务 –
Gishu
2010-06-21 12:48:19