App.config replacements for unit tests

后端 未结 3 1073
终归单人心
终归单人心 2021-02-02 00:38

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 t

相关标签:
3条回答
  • 2021-02-02 01:13

    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.

    0 讨论(0)
  • 2021-02-02 01:30

    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
    0 讨论(0)
  • 2021-02-02 01:30

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

    0 讨论(0)
提交回复
热议问题