我的持续集成服务器 (TeamCity) 配置为在构建时运行我们应用程序中的所有单元测试。在运行这些测试之前,我需要更改一些 appSettings 以使它们对我们的 CI 服务器有效。通过使用 Visual Studio 提供的部署项目,我正在为我的 Web 项目实现类似的功能。我可以为测试项目做同样的事情吗?
谢谢,贡萨洛
我的持续集成服务器 (TeamCity) 配置为在构建时运行我们应用程序中的所有单元测试。在运行这些测试之前,我需要更改一些 appSettings 以使它们对我们的 CI 服务器有效。通过使用 Visual Studio 提供的部署项目,我正在为我的 Web 项目实现类似的功能。我可以为测试项目做同样的事情吗?
谢谢,贡萨洛
可以通过变通方法对 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>
相关资源:
我创建了一个 Visual Studio 插件,可用于转换 app.config,其方式与转换 web.config 的方式相同。您可以在http://visualstudiogallery.msdn.microsoft.com/69023d00-a4f9-4a34-a6cd-7e854ba318b5找到加载项 SlowCheetah 。
我已经发布了一篇关于如何在构建服务器上使用它的博客。
我建议你包装你的配置查找,提取一个接口并在测试时存根。