我正在使用 Azure DevOps 管道来执行单元测试并将我的 Blazor Server 应用程序部署到代理。我使用
NUnit
测试框架和 PostgreSQL
作为数据库。对于单元测试,我使用单独的测试数据库,其中 ConnectionString 存储在我的测试项目的 appsettings.json
中。但是 appsettings.json
没有签入 Git,因为它的内容是或应该是不同的,具体取决于应用程序运行的位置。因此,代理上缺少 appsettings.json
。
我尝试将包含所需内容的
appsettings.json
手动放入构建测试项目的 C:\agent\_work\...\...\TestProject
文件夹中。我希望 appsettings.json
保留在这个文件夹中并被我的测试项目选中。但在项目重建之前,该文件夹已被管道删除。
接下来我尝试的是将
appsettings.json
放置到管道构建文件夹之外的位置,并为测试项目提供 appsettings.json
的绝对路径。到目前为止这有效。但我对此不太满意,因为这意味着我必须将我的 appsettings.json
放在本地电脑上完全相同的路径上。我认为 appsettings.json
属于实际项目附近的某个地方。
所以我的目标是为我的代理和我的本地电脑提供不同
appsettings.json
。我也不想在管道中定义代理appsettings.json
,因为这似乎不是解决这个问题的干净解决方案,因为这些设置实际上只涉及代理。
可以实现这个目标吗?
更新: 我通过让我的测试项目在项目文件夹和外部绝对路径中搜索
appsettings.json
,改进了项目文件夹外部的 appsettings.json
的临时解决方案。但我还是觉得不太理想。
根据您的描述,我了解您在运行管道代理作业时需要为测试项目使用不同的
appsettings.json
文件,其中存储有不同的ConnectionStrings;由于同样的原因,appsettings.json
不会推送到 Git 存储库。
由于 Git 版本控制的好处,您想创建不同的分支并在其中包含不同的
appsettings.json
文件吗?然后,您可以在运行管道时从不同分支选择不同的源,而不必担心appsettngs.json
中的内容
另一方面,您也可以考虑使用
复制文件任务作为自动复制
appsettings.json
文件的解决方法,而不是手动更改/复制 appsettings.json
文件到管道工作目录中。如果您使用此任务从本地代理计算机上的共享路径复制文件,请确保本地代理服务/进程具有足够的权限来访问该路径。如果您希望从存储库中签出 appsetting.json
,请注意,您需要首先将它们推送到存储库的不同路径中,然后您也可以使用此任务将预期的 appsettings.json
文件复制到$(Build.SourcesDirectory)\**\TestProject
的路径。