Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何为TFS CI测试环境配置app.config_.net_Tfs_Continuous Integration - Fatal编程技术网

.net 如何为TFS CI测试环境配置app.config

.net 如何为TFS CI测试环境配置app.config,.net,tfs,continuous-integration,.net,Tfs,Continuous Integration,我有一些需要连接到DB的集成测试。在app.config中,我有一个指向服务器“”的连接字符串。当我在工作站上的VS中运行测试时,测试运行正常,因为我有一个SQL server实例也在本地运行 我们有一个在TFS上运行的CI构建和测试设置,但在此环境中,DB不在同一台机器上,因此app.config中的connectionstring错误,测试无法连接 如何配置TFS CI生成以更新app.config以指向其他数据库?或者,是否有其他方法可以解决此问题?通过TFS构建构建应用程序时,可以使用X

我有一些需要连接到DB的集成测试。在app.config中,我有一个指向服务器“”的连接字符串。当我在工作站上的VS中运行测试时,测试运行正常,因为我有一个SQL server实例也在本地运行

我们有一个在TFS上运行的CI构建和测试设置,但在此环境中,DB不在同一台机器上,因此app.config中的connectionstring错误,测试无法连接


如何配置TFS CI生成以更新app.config以指向其他数据库?或者,是否有其他方法可以解决此问题?

通过TFS构建构建应用程序时,可以使用XML转换来修改配置(这意味着您将有两种解决方案配置:一种用于带VS的本地构建,另一种用于TFS构建)或者,您可以在生成时使用脚本来修改app.config连接字符串

您可以在通过TFS构建构建应用程序时使用XML转换来修改,也可以在构建时使用脚本来修改app.config连接字符串

最好将集成测试转移到测试环境中。最好是构建速度快,不需要应用程序的实例

如果您进行构建和单元测试,那么您可以在VisualStudio的发布管理中自动启动发布,该发布管理还可以配置为运行集成和UI测试


发布工具负责查看连接字符串等等。

最好将集成测试转移到测试环境中。最好是构建速度快,不需要应用程序的实例

如果您进行构建和单元测试,那么您可以在VisualStudio的发布管理中自动启动发布,该发布管理还可以配置为运行集成和UI测试


发布工具负责查看连接字符串等等。

为了解决这个问题,我使用VS插件选择XML转换路径

使用此工具,您可以为每个环境(例如:dev、QA、PP)创建构建配置,并生成app.config的XML转换

替换所需的部分示例:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <SqlUnitTesting xdt:Transform="Replace">
    <DataGeneration ClearDatabase="true" />
    <ExecutionContext Provider="System.Data.SqlClient" ConnectionString="Data Source=sqspsqlxx;Initial Catalog=IC_RMI_Result;Integrated Security=True;Pooling=False;MultipleActiveResultSets=False"
        CommandTimeout="30" />
    <PrivilegedContext Provider="System.Data.SqlClient" ConnectionString="Data Source=sqpsqlxx;Initial Catalog=IC_RMI_Result;Integrated Security=True;Pooling=False;MultipleActiveResultSets=False"
        CommandTimeout="30" />
  </SqlUnitTesting>

对于TFS集成,可能有一种方法可以使用开箱即用的nuget恢复,但我只是将该包添加到源代码管理中

在teamp构建队列(或构建定义中的harcode)中,只需指定要针对的构建配置(dev、qa、PP)


(注意:我的team build agent使用windows crendentials,因此我确保该帐户在目标DBs上具有所需的权限)

要解决此问题,我使用VS插件选择XML转换路径

使用此工具,您可以为每个环境(例如:dev、QA、PP)创建构建配置,并生成app.config的XML转换

替换所需的部分示例:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <SqlUnitTesting xdt:Transform="Replace">
    <DataGeneration ClearDatabase="true" />
    <ExecutionContext Provider="System.Data.SqlClient" ConnectionString="Data Source=sqspsqlxx;Initial Catalog=IC_RMI_Result;Integrated Security=True;Pooling=False;MultipleActiveResultSets=False"
        CommandTimeout="30" />
    <PrivilegedContext Provider="System.Data.SqlClient" ConnectionString="Data Source=sqpsqlxx;Initial Catalog=IC_RMI_Result;Integrated Security=True;Pooling=False;MultipleActiveResultSets=False"
        CommandTimeout="30" />
  </SqlUnitTesting>

对于TFS集成,可能有一种方法可以使用开箱即用的nuget恢复,但我只是将该包添加到源代码管理中

在teamp构建队列(或构建定义中的harcode)中,只需指定要针对的构建配置(dev、qa、PP)


(注意:我的team build agent使用windows crendentials,因此我确保该帐户在目标DBs上具有所需的权限)

您好,我已经在这样做了。他们已经不需要应用程序的实例了。它们作为CI配置的一部分在TFS生成服务器上运行。如果您可以详细说明您的语句“发布工具会注意查看连接字符串等等”,这可能会有所帮助,因为我相信这涵盖了我的实际问题—如何在CI测试运行期间设置特定的连接字符串。或者它只能在部署到目标环境时(而不是在测试运行期间)更新连接字符串吗?单元测试应该在TFS构建期间运行,不需要实例。集成测试需要一个实例,应该在将应用程序部署到特定环境后运行。应用程序部署由TFS Release Management处理,它使您能够为每个环境标记app.configs。您好,这正是我正在做的事情。他们已经不需要应用程序的实例了。它们作为CI配置的一部分在TFS生成服务器上运行。如果您可以详细说明您的语句“发布工具会注意查看连接字符串等等”,这可能会有所帮助,因为我相信这涵盖了我的实际问题—如何在CI测试运行期间设置特定的连接字符串。或者它只能在部署到目标环境时(而不是在测试运行期间)更新连接字符串吗?单元测试应该在TFS构建期间运行,不需要实例。集成测试需要一个实例,应该在将应用程序部署到特定环境后运行。应用程序部署由TFS Release Management处理,它使您能够为每个环境标记app.configs。您好,这正是我正在做的事情。他们已经不需要应用程序的实例了。它们作为CI配置的一部分在TFS生成服务器上运行。如果您可以详细说明您的语句“发布工具会注意查看连接字符串等等”,这可能会有所帮助,因为我相信这涵盖了我的实际问题—如何在CI测试运行期间设置特定的连接字符串。或者它只能在部署到目标环境时(而不是在测试运行期间)更新连接字符串吗?单元测试应该在TFS构建期间运行,不需要实例。集成测试需要一个实例,应该在dep之后运行