我的持续集成服务器(TeamCity)配置为在构建中运行我们应用程序中的所有单元测试。在运行这些测试之前,我需要更改一些appSettings以使它们对我们的CI服务器有效。通过使用随Visual Studio提供的部署项目,我正在为我的Web项目实现类似的功能。我可以为测试项目做同样的事吗?
谢谢Gonzalo
答案 0 :(得分:28)
可以通过解决方法对App.config文件使用Web.config转换。
您只需在构建过程的右侧阶段调用相应的MSBuild任务。
将此代码段添加到项目文件中:
<UsingTask
TaskName="TransformXml"
AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="AfterCompile" Condition="exists('App.$(Configuration).config')">
<!-- Generates the transformed App.config in the intermediate directory -->
<TransformXml
Source="App.config"
Destination="$(IntermediateOutputPath)$(TargetFileName).config"
Transform="App.$(Configuration).config" />
<!-- Forces the build process to use the transformed configuration file -->
<ItemGroup>
<AppConfigWithTargetPath Remove="App.config"/>
<AppConfigWithTargetPath
Include="$(IntermediateOutputPath)$(TargetFileName).config">
<TargetPath>$(TargetFileName).config</TargetPath>
</AppConfigWithTargetPath>
</ItemGroup>
</Target>
然后将额外的App.config文件添加到您希望应用转换的每个构建配置的项目中。例如:
<ItemGroup>
<None Include="App.config" />
<None Include="App.Release.config">
<DependentUpon>App.config</DependentUpon>
</None>
</ItemGroup>
相关资源:
答案 1 :(得分:7)
我创建了一个Visual Studio add,其中可以用来转换app.config,其方式与转换web.config的方式相同。您可以在http://visualstudiogallery.msdn.microsoft.com/69023d00-a4f9-4a34-a6cd-7e854ba318b5找到加载项SlowCheetah。
我发布了一篇关于如何get this working on a build server的博客。
答案 2 :(得分:6)
我建议您在测试时包装配置查找,提取接口并存根。