开发者

App.config replacements for unit tests

开发者 https://www.devze.com 2023-02-13 11:27 出处:网络
my continuous integration server (TeamCity) is configured to run all the unit tests in our app on build. Prior to running those tests, i need to change some of the appSettings to make them valid for o

my continuous integration server (TeamCity) is configured to run all the unit tests in our app on build. Prior to running those tests, i need to change some of the appSettings to make them valid for our CI server. I'm achieving something similar for my web project by using the开发者_如何学运维 deployment project provided with Visual Studio. Can i do the same for a Test project?

Thanks, Gonzalo


It's possible to use Web.config Transformations for App.config files through a workaround.

You simply have to invoke the appropriate MSBuild tasks at the right stage in your build process.
Add this code snippet to your project file:

<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>

Then add additional App.config files to your project for each build configuration where you wish to apply a transformation. For example:

<ItemGroup>
    <None Include="App.config" />
    <None Include="App.Release.config">
        <DependentUpon>App.config</DependentUpon>
    </None>
</ItemGroup>

Related resources:

  • Web.config Transformation Syntax for Web Application Project Deployment
  • .Config File Transformation


I have created a Visual Studio add in which can be used to transform app.config in the same way that web.config is transformed. You can find the add-in, SlowCheetah, at http://visualstudiogallery.msdn.microsoft.com/69023d00-a4f9-4a34-a6cd-7e854ba318b5.

I have posted a blog about how to get this working on a build server as well.


I suggest that you wrap your config lookups, extract an interface and stub this when testing.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号