我正在开发Azure DevOps CI CD管道。该项目的后端是Dotnet Core,前端是Angular 8,对于数据库,我们使用实体框架代码优先的方法。我能够在管道中添加前端和后端。现在我陷入了数据库部署的困境。因为我也找不到任何专门的文章。
该项目由多上下文和多项目组成。参考文件夹结构
在本地,我们通常运行这个命令来生成迁移,它运行得很好。
添加迁移-上下文ABCCompanyContext AddCompanyTable
现在,在Pipeline中,我添加了以下命令,该命令是从stackoverflow中获得的。但没有奏效。但是由于这个错误。看起来我真的很接近
管道命令
dotnet工具安装-全局dotnet ef dotnet ef迁移脚本-i-o$(Build.ArtifactStagingDirectory(\Migrations\migrate.sql--项目**/ABC.Company.Data.csproj--启动项目**/AABC.Company.Api.csproji-i-o$(Build.ErtifactStaging Directory(\Mmigrations\migrate.sql
错误日志
2020-12-24T06:49:27.0265041Z================启动命令输出===========================2020-12-24T06:49:27.0688206Z#[命令]";C: \windows\system32\cmd.exe"/D/E:ON/V:OFF/S/C";呼叫"D: \a_temp\f3a33029-4f61-404f-9b64-c73c5296123a.cmd"2020-12-24T06:49:32.9358440Z您可以使用以下命令:dotnet ef 2020-12-24T06:49:32.9359182Z工具已成功安装"dotnet ef"(版本"5.0.1"(。2020-12-24T06:49:38.4701578Z System.IO.IOException:文件名,目录名或卷标语法不正确。:'D:\a\1\s*\obj'2020-12-24T06:49:38.4702878ZSystem.IO.FileSystem.CreateDirectory(字符串完整路径,字节[]securityDescriptor(2020-12-24T06:49:38.4703503ZSystem.IO.Directory.CreateDirectory(字符串路径(2020-12-24T06:49:38.4704199ZMicrosoft.EntityFrameworkCore.Tools.Project.FromFile(字符串文件,String buildExtensionsDir,字符串框架,字符串配置,字符串运行时(2020-12-24T06:49:38.4705029ZMicrosoft.EntityFrameworkCore.Tools.RootCommand.Execute(String[]_(2020-12-24T06:49:38.4705729ZMicrosoft.EntityFrameworkCore.Tools.Commands.CommandBase。<gt;c__DisplayClass0_0.b_0(字符串[]args(2020-12-24T06:49:38.4706399ZMicrosoft.DotNet.Cli.CommandLine.CommandLineApplication.Execute(String[]args(2020-12-24T06:49:38.4707003ZMicrosoft.EntityFrameworkCore.Tools.Program.Main(String[]args(2020-12-24T06:49:38.4707626Z文件名、目录名或卷标签语法不正确。:'D: \a\1\s*\obj'2020-12-24T06:49:38.6646502Z##[error]Cmd.exe退出,代码为"1"。2020-12-24T06:49:38.7627325Z##【章节】精加工:构建EfCore迁移
错误消息,
System.IO.IOException:文件名、目录名或卷标语法不正确。:'D: \a\1\s\*\obj'
路径字符串包含字符"*
"。通常,该字符在文件名和文件夹名中不可用。
正如有关.NET Core CLI的文档中的介绍,选项">--project
"one_answers">--startup-project
(的值是指向项目文件夹的相对路径。
根据我的测试,在'dotnet ef
'命令中,它似乎不支持通配符模式。
- 当我使用通配符模式设置路径值时,它总是返回相同的错误消息
System.IO.IOException:文件名、目录名或卷标语法不正确。:'D: \a\1\s\**\obj'
- 但是,当我直接提供完整的相对路径而不是使用通配符模式时,错误就会消失
因此,我建议您直接使用项目文件夹的完整相对路径。