Visual Studio 团队服务 API 示例抛出 System.Net.Http 错误

Visual Studio Team Services API Example Throwing System.Net.Http Error

我正在尝试编写一个与 Visual Studio Team Services 通信的应用程序,使用列出的 Nuget 包 here

示例代码直接来自 Microsoft 的官方文档,在同一页面上列出了包,在 "Pattern for use" 下。我的测试代码在控制台应用程序中,设置为 .net 框架的 4.7 版本(由 Visual Studio 2017 15.2(26430.16) Release 编译,但我认为这无关紧要)。除了更改连接 url、项目和存储库名称外,该代码与 Microsoft 的示例相同。

唯一直接安装的 Nuget 包(大约 30 个其他作为依赖项安装)是 Microsoft.TeamFoundationServer.ExtendedClient

Install-Package Microsoft.TeamFoundationServer.ExtendedClient

using System;
using Microsoft.VisualStudio.Services.Common;
using Microsoft.VisualStudio.Services.Client;
using Microsoft.TeamFoundation.SourceControl.WebApi;
using Microsoft.VisualStudio.Services.WebApi;

namespace vssApiTest
{
    class Program
    {
        const String c_collectionUri = "https://[[redacted]].visualstudio.com/DefaultCollection";
        const String c_projectName = "Inspections";
        const String c_repoName = "Src";

        static void Main(string[] args)
        {
            // Interactively ask the user for credentials, caching them so the user isn't constantly prompted
            VssCredentials creds = new VssClientCredentials();
            creds.Storage = new VssClientCredentialStorage();

            // Connect to VSTS
            VssConnection connection = new VssConnection(new Uri(c_collectionUri), creds);

            // Get a GitHttpClient to talk to the Git endpoints
            GitHttpClient gitClient = connection.GetClient<GitHttpClient>();

            // Get data about a specific repository
            var repo = gitClient.GetRepositoryAsync(c_projectName, c_repoName).Result;
        }
    }
}

在行 VssConnection connection = new VssConnection(new Uri(c_collectionUri), creds); 上,一个 TypeLoadException 被抛出(在 运行 时间)消息:

Inheritance security rules violated by type: 'System.Net.Http.WebRequestHandler'. Derived types must either match the security accessibility of the base type or be less accessible.

None 的 Google 搜索变体我在这个错误消息上尝试过,返回了任何有用的东西。

我是不是做错了什么,我遵循的示例代码是错误的,还是存在其他问题?

问题是由于 System.Net.Http Nuget 包的 4.1.0 版本中引入的错误,如 here 所述。

解决方案是将该 Nuget 包更新到最新版本(4.3.2 此时,可能 也已在早期版本中修复)。