Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.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
C# 使用DB文件在Azure Devops上运行测试_C#_Unit Testing_Azure Devops_Azure Pipelines_Sql Server Data Tools - Fatal编程技术网

C# 使用DB文件在Azure Devops上运行测试

C# 使用DB文件在Azure Devops上运行测试,c#,unit-testing,azure-devops,azure-pipelines,sql-server-data-tools,C#,Unit Testing,Azure Devops,Azure Pipelines,Sql Server Data Tools,有没有办法使用以下任务之一在Azure Devops管道上创建DB文件 我的思路是使用VS在代理上创建一个localdb,并像使用VS一样在该DB文件上运行单元测试SSDT。我可以创建DB文件工具>连接DB>Sql server DB文件并输入名称。我可以连接到它并运行测试。似乎我不能在Azure devops管道上这样做 我知道首选的方法是分配一个Azure SQL server并对其运行测试,但DB非常小,如果我可以对DB文件运行这些测试,这似乎是一个更好的主意 使用DB文件在Azure D

有没有办法使用以下任务之一在Azure Devops管道上创建DB文件

我的思路是使用VS在代理上创建一个localdb,并像使用VS一样在该DB文件上运行单元测试SSDT。我可以创建DB文件工具>连接DB>Sql server DB文件并输入名称。我可以连接到它并运行测试。似乎我不能在Azure devops管道上这样做

我知道首选的方法是分配一个Azure SQL server并对其运行测试,但DB非常小,如果我可以对DB文件运行这些测试,这似乎是一个更好的主意

使用DB文件在Azure Devops上运行测试

作为解决方法,您可以尝试签入LocalDb文件mdf和ldf,将文件复制到输出,并更改连接字符串以使用当前执行路径:

您可以查看文档以了解一些详细信息

希望这有帮助

使用DB文件在Azure Devops上运行测试

作为解决方法,您可以尝试签入LocalDb文件mdf和ldf,将文件复制到输出,并更改连接字符串以使用当前执行路径:

您可以查看文档以了解一些详细信息


希望这能有所帮助。

基本上我找到了一种在代理上完成这一切的方法。但是,如果使用较新的语法,则必须更新代理localdb

- task: CopyFiles@2
  inputs:
    Contents: '**/Output/*.dacpac'
    flattenFolders: true
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |      
      sqllocaldb start MSSQLLocalDB
      sqllocaldb info MSSQLLocalDB

      #import SqlServer module
      Import-Module -Name "SqlServer"

      # create variable with SQL to execute
      $sql = "
      CREATE DATABASE [MyDatabase]
        CONTAINMENT = NONE
        ON  PRIMARY
        ( NAME = N'MyDatabase', FILENAME = N'd:\a\1\s\testing.Data\test\bin\Output\MyDatabase.mdf' , SIZE = 1048576KB , FILEGROWTH = 262144KB )
        LOG ON
        ( NAME = N'MyDatabase_log', FILENAME = N'd:\a\1\s\testing.Data\test\bin\Output\MyDatabase_log.ldf' , SIZE = 524288KB , FILEGROWTH = 131072KB )
      GO

      USE [master]
      GO
      ALTER DATABASE [MyDatabase] SET RECOVERY SIMPLE WITH NO_WAIT
      GO

      ALTER AUTHORIZATION ON DATABASE::[MyDatabase] TO [sa]
      GO "
      Invoke-SqlCmd -ServerInstance "(localdb)\MSSQLLocalDB" -database master -Query $sql

- task: SqlDacpacDeploymentOnMachineGroup@0
  inputs:
    TaskType: 'dacpac'
    DacpacFile: '$(Build.ArtifactStagingDirectory)/*.dacpac'
    TargetMethod: 'connectionString'
    ConnectionString: 'Data Source=(localdb)\.;Initial Catalog=MyDatabase;Integrated Security=True;'

有了它,您可以将生成的已创建的.mdf文件附加到localdb,并将dacpac发布到其中。然后,如果您想运行测试,您可以这样做。

基本上,我找到了一种在代理上完成所有测试的方法。但是,如果使用较新的语法,则必须更新代理localdb

- task: CopyFiles@2
  inputs:
    Contents: '**/Output/*.dacpac'
    flattenFolders: true
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |      
      sqllocaldb start MSSQLLocalDB
      sqllocaldb info MSSQLLocalDB

      #import SqlServer module
      Import-Module -Name "SqlServer"

      # create variable with SQL to execute
      $sql = "
      CREATE DATABASE [MyDatabase]
        CONTAINMENT = NONE
        ON  PRIMARY
        ( NAME = N'MyDatabase', FILENAME = N'd:\a\1\s\testing.Data\test\bin\Output\MyDatabase.mdf' , SIZE = 1048576KB , FILEGROWTH = 262144KB )
        LOG ON
        ( NAME = N'MyDatabase_log', FILENAME = N'd:\a\1\s\testing.Data\test\bin\Output\MyDatabase_log.ldf' , SIZE = 524288KB , FILEGROWTH = 131072KB )
      GO

      USE [master]
      GO
      ALTER DATABASE [MyDatabase] SET RECOVERY SIMPLE WITH NO_WAIT
      GO

      ALTER AUTHORIZATION ON DATABASE::[MyDatabase] TO [sa]
      GO "
      Invoke-SqlCmd -ServerInstance "(localdb)\MSSQLLocalDB" -database master -Query $sql

- task: SqlDacpacDeploymentOnMachineGroup@0
  inputs:
    TaskType: 'dacpac'
    DacpacFile: '$(Build.ArtifactStagingDirectory)/*.dacpac'
    TargetMethod: 'connectionString'
    ConnectionString: 'Data Source=(localdb)\.;Initial Catalog=MyDatabase;Integrated Security=True;'

有了它,您可以将生成的已创建的.mdf文件附加到localdb,并将dacpac发布到其中。然后,如果您想运行测试,您可以这样做。

或者您使用inmemory db进行测试?我不希望在azure上创建一个采用定价层的人。因此,我想在代理上创建一个db文件,这样我就可以在它上运行测试,因为它很小。或者有理由不这样做吗?Inmemory数据库就是在内存中创建的,顾名思义。例如,这是实体框架中的一项功能:或者您使用inmemory db进行测试?我不希望在azure上创建一个采用定价层的人。因此,我想在代理上创建一个db文件,这样我就可以在它上运行测试,因为它很小。或者有理由不这样做吗?Inmemory数据库就是在内存中创建的,顾名思义。这是实体框架中的一个特性,例如:谢谢,这很有帮助。我在托管代理上找到了一种方法,我会在这里回复谢谢,这很有帮助。我在托管代理上找到了一种方法,我会在这里回复的,太好了!谢谢你在这里分享你的解决方案,你可以,它可以帮助其他社区成员谁得到同样的问题,我们可以存档这个线程,谢谢。太好了!谢谢你在这里分享你的解决方案,你可以,这样它可以帮助其他社区成员谁得到同样的问题,我们可以存档这个线程,谢谢。