我正在尝试使用此处列出的Nuget包编写一个与Visual Studio Team Services通信的应用程序。
示例代码直接来自Microsoft的官方文档,在同一页面上列出了软件包,在"使用模式"下。 我的测试代码位于控制台应用程序中,设置为.net框架的版本4.7(由Visual Studio 2017 15.2(26430.16(版本编译,但我认为这并不重要(。 该代码与Microsoft的示例相同,只是更改了连接 URL、项目和存储库名称。
唯一直接安装的 Nuget 包(大约 30 个其他包作为依赖项安装(是Microsoft.TeamFoundationServer.ExtendedClient
。
安装包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
(在运行时(,其中包含以下消息:
类型违反的继承安全规则: 'System.Net.Http.WebRequestHandler'.派生类型必须匹配 基本类型的安全可访问性或不太可访问性。
我在此错误消息上尝试过的所有Google搜索变体都没有返回任何有用的信息。
我做错了什么,我遵循的示例代码是错误的,还是发生了其他问题?
该问题是由于System.Net.Http
Nuget 包版本4.1.0
中引入的错误,如此处所述。
解决方案是将该Nuget包更新到最新版本(4.3.2
此时,它可能已在早期版本中修复(。