首页 > 解决方案 > 构建代理发布时未找到应用程序依赖项

问题描述

我的 .NETStandard 库在 Visual Studio 上本地运行良好。但是,当我发布包含我的 .NETStandard 库的 WebApi 时,发布过程在 EF Core 迁移步骤中失败了。我使用 @bendayconsulting 的 Deploy Entity Framework Core Migrations 发布任务。我收到的错误消息是未找到应用程序依赖项清单(MySecondMobileApp.ServerData.deps.json)中指定的程序集:包:'Google.Protobuf',版本:'3.5.1' 路径:'lib/netstandard1.0 /Google.Protobuf.dll

当我查看解决方案中的 packages 文件夹时,没有 Google.Protobuf 程序集。该程序集存储在我的全局 NuGet 文件夹中,并且是 MySql.EntityFrameWorkCore NuGet 包的一部分。MySql.EntityFramworkCore 包也安装在我用户的全局 NuGet 文件夹中。如何在解决方案的文件夹中获取这些包?我认为这就是我的问题的答案。

我的 deps 文件如下所示:

{
  "runtimeTarget": {
    "name": ".NETStandard,Version=v2.0/",
    "signature": "19d3dd659b5fa2adabeefcff78ce8381da3d4fe9"
  },
  "compilationOptions": {},
  "targets": {
    ".NETStandard,Version=v2.0": {},
    ".NETStandard,Version=v2.0/": {
      "ClassLibrary1/1.0.0": {
        "dependencies": {
          "Google.Protobuf": "3.6.1",
          "NETStandard.Library": "2.0.3"
        },
        "runtime": {
          "ClassLibrary1.dll": {}
        }
      },
      "Google.Protobuf/3.6.1": {
        "dependencies": {
          "NETStandard.Library": "2.0.3"
        },
        "runtime": {
          "lib/netstandard1.0/Google.Protobuf.dll": {
            "assemblyVersion": "3.6.1.0",
            "fileVersion": "3.6.1.0"
          }
        }
      },
      "Microsoft.NETCore.Platforms/1.1.0": {},
      "NETStandard.Library/2.0.3": {
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0"
        }
      }
    }
  },
  "libraries": {
    "ClassLibrary1/1.0.0": {
      "type": "project",
      "serviceable": false,
      "sha512": ""
    },
    "Google.Protobuf/3.6.1": {
      "type": "package",
      "serviceable": true,
      "sha512": "sha512-D/h9IZl76jjfM5VlPzG235Zdys9RKXNLYbRGm2fa6Y2UshTqAvYBPIydNOvNTEa24DER/m/zvelHlLO9n1GtNQ==",
      "path": "google.protobuf/3.6.1",
      "hashPath": "google.protobuf.3.6.1.nupkg.sha512"
    },
    "Microsoft.NETCore.Platforms/1.1.0": {
      "type": "package",
      "serviceable": true,
      "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==",
      "path": "microsoft.netcore.platforms/1.1.0",
      "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512"
    },
    "NETStandard.Library/2.0.3": {
      "type": "package",
      "serviceable": true,
      "sha512": "sha512-st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==",
      "path": "netstandard.library/2.0.3",
      "hashPath": "netstandard.library.2.0.3.nupkg.sha512"
    }
  }
}

标签: azure-devops.net-standard-2.0

解决方案


最后,我解决了这个问题。首先,我会为我不完整的问题道歉。我不得不告诉stackoverflow我的整个问题。我的基本问题是我无法在 Azure Devops 的 Hosted2017 构建代理上发布包含 MySql 的 EntityFrameworkCore 的 WebAPI。构建代理还执行数据库迁移。

经过一番思考,我意识到.NET 默认不支持 MySqlConnection -> 您必须在构建代理上安装其他客户端软件。不幸的是,Microsoft 构建代理没有能力在构建代理和 MySQL 数据库服务器之间建立 MySQLConnection。

目前对我来说完全不同的是,AWS 上的 API WebServer 默认支持此数据库连接。我的 WebAPI 在网络服务器上运行良好。

让构建代理与 MySQL 一起工作的解决方案是安装内部构建代理并安装 MySQL Workbench 以安装 MYSQL 软件。现在构建代理工作正常。迁移已成功执行。


推荐阅读