在构建代理发布时找不到应用程序依赖项

时间:2019-01-14 20:40:24

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

我的.NETStandard库在Visual Studio上可以在本地正常运行。但是,当我发布包含.NETStandard库的WebApi时,在EF Core Migrations步骤中发布过程失败。 我通过@bendayconsulting使用“部署实体框架核心迁移”发布任务。我收到的错误消息是在应用程序依赖项清单(MySecondMobileApp.ServerData.deps.json)中指定的n程序集未找到: 软件包:“ Google.Protobuf”,版本:“ 3.5.1” 路径:“ lib / netstandard1.0 / Google.Protobuf.dll

当我在解决方案中查看程序包文件夹时,没有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"
    }
  }
}

2 个答案:

答案 0 :(得分:0)

配置package management feed (Azure Artifacts)并将内部软件包推送到其中,然后在构建之前使用NuGet还原任务,然后再进行构建以从内部供稿还原软件包。

答案 1 :(得分:0)

最后,我解决了这个问题。首先,我将对我的不完整的问题表示歉意。我不得不告诉stackoverflow我的整个问题。我的基本问题是,我无法在Azure Devops中的Hosted2017构建代理上发布包含MySql的EntityFrameworkCore for MySql的WebAPI。 Build Agent还可以执行数据库迁移。

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

目前对我来说最重要的是,AWS上的API WebServer默认支持此数据库连接。我的WebAPI在Web服务器上运行完美。

使构建代理与MySQL配合使用的解决方案是安装内部构建代理,然后安装MySQL Workbench来安装MYSQL软件。 现在,构建代理可以正常工作。迁移已成功执行。