如何在通过 Visual Studio 2008 运行测试时修改 Web.config 中的连接字符串

本文关键字:config Web 修改 字符串 连接 运行测试 Visual 2008 Studio | 更新日期: 2023-09-27 18:32:46

我目前有2个项目,一个是标准的ASMX Web服务,另一个是测试项目。Web 服务项目有一个包含我的连接字符串的Web.config文件。我知道如何将连接字符串更改为 qa 或生产。我的问题是我不确定如何更改测试项目的连接字符串。我想要的是使用SQLite进行测试。

这是我添加到测试 .csproj 文件中的目标文件的外观。

<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <ConnectionString>Data Source=:memory:</ConnectionString>   
    </PropertyGroup>
    <Target Name="BeforeBuild"
        DependsOnTargets="Clean" />
    <Target Name="AfterBuild"
        DependsOnTargets="UpdateConfigFileForEnvironment" />
    <Target Name="UpdateConfigFileForEnvironment">
        <PropertyGroup>
            <AppConfigFileName>$(OutDir)Web.config</AppConfigFileName>
        </PropertyGroup>
        <FileUpdate
            Files="$(AppConfigFileName)"
            Encoding="ASCII"
            Regex="ConnectionStringBuild"
            ReplacementText="$(ConnectionString)" />
    </Target>
</Project>

这是 Web 服务项目中的Web.config文件。我省略了大部分内容,因为它无关紧要。

  <appSettings>
    <add key="ConnectionString" value="ConnectionStringBuild" />
  </appSettings>

当我在VS2008中通过ReSharper运行单元测试时,ConnectionString不返回任何内容,以获取AppSettings条目时出现问题。此外,如果我在测试项目的命令行中运行msbuild,则连接字符串将成功更新。

运行测试时如何修改连接字符串?

如何在通过 Visual Studio 2008 运行测试时修改 Web.config 中的连接字符串

应以

将连接字符串作为依赖项传递到数据访问类中的方式构建数据访问类(请参阅 Paul Hiles 的配置设置是依赖项)。

这将允许你在测试代码中传入与配置中的连接字符串不同的连接字符串。