Inicio Rápido del SDK de C#
Esta guía proporciona un inicio rápido para usar el SDK de C# para operaciones comunes. Aprenderás cómo instalar el SDK, configurar las credenciales de acceso y realizar operaciones básicas para obtener la información de actualización más reciente.
Notas
- Para hacer solicitudes usando el SDK de C#, necesitas inicializar una instancia de Client. Este artículo crea un Client cargando la configuración predeterminada. Para más opciones de configuración, por favor consulta Configuración del Cliente.
Requisitos Previos
- Has registrado una cuenta de UpgradeLink.
- Has obtenido el AccessKey y AccessSecret.
- Has configurado una estrategia de actualización de aplicación Windows.
Obteniendo Credenciales

Instalación
Instalar a través de NuGet
- Si NuGet no está instalado en tu Visual Studio, por favor instala NuGet primero.
- Después de instalar NuGet, crea o abre un proyecto existente en
Visual Studio, luego selecciona<Tools>-<NuGet Package Manager>-<Manage NuGet Packages for Solution>.- Busca
ToolsetLink.UpgradeLinkApi, encuentraToolsetLink.UpgradeLinkApien los resultados, selecciona la versión más reciente y haz clic en Instalar para agregarlo a tu proyecto.
Instalar a través de GitHub
- Si git no está instalado, por favor instala git primero.
- git clone https://github.com/toolsetlink/upgradelink-api-csharp.git
- Después de descargar el código fuente, instálalo según el "Método de Integración de Proyecto" a continuación.
Método de Integración de Proyecto
- Si has descargado el paquete del SDK o el código fuente desde GitHub y quieres instalar desde el código fuente, haz clic derecho en
<Solution>y en el menú contextual, haz clic en<Add>-><Existing Project>.- En el diálogo que aparece, selecciona el archivo
upgradeLinkApiCSharp.csprojy haz clic en Abrir.- A continuación, haz clic derecho en
<Your Project>-<References>, selecciona<Add Reference>, en el diálogo que aparece, selecciona la pestaña<Projects>, marca el proyectoupgradeLinkApiCSharpy haz clic en OK.
Inicio Rápido
El siguiente ejemplo demuestra cómo inicializar un Cliente y obtener la información de actualización más reciente para una aplicación Win.
Obtener la Información de Actualización Más Reciente para una Aplicación Win
csharp
using System;
using System.Reflection;
using NUnit.Framework;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using ToolsetLink.UpgradeLinkApi;
using ToolsetLink.UpgradeLinkApi.Models;
namespace UpgradeLinkApi.Tests
{
[TestFixture]
public class ClientTests
{
// Resolver de contratos JSON personalizado para manejar el atributo [NameInMap]
private class NameInMapContractResolver : DefaultContractResolver
{
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
JsonProperty property = base.CreateProperty(member, memberSerialization);
// Buscar atributo NameInMap
var nameInMapAttribute = member.GetCustomAttribute(typeof(Tea.NameInMapAttribute)) as Tea.NameInMapAttribute;
if (nameInMapAttribute != null)
{
// Usar el valor del atributo NameInMap como nombre de campo JSON
property.PropertyName = nameInMapAttribute.Name;
}
return property;
}
}
// Configuraciones de serialización JSON personalizadas
private static readonly JsonSerializerSettings _jsonSettings = new JsonSerializerSettings
{
ContractResolver = new NameInMapContractResolver(),
NullValueHandling = NullValueHandling.Ignore
};
private Client _client;
private Config _config;
[SetUp]
public void Setup()
{
// Configurar el cliente para pruebas
_config = new Config
{
AccessKey = "mui2W50H1j-OC4xD6PgQag",
AccessSecret = "PEbdHFGC0uO_Pch7XWBQTMsFRxKPQAM2565eP8LJ3gc",
// Protocol = "HTTP",
// Endpoint = "127.0.0.1:8888"
};
_client = new Client(_config);
}
[Test]
public void WinUpgrade_Should_Send_Request_And_Print_Result()
{
// Arrange
var request = new WinUpgradeRequest
{
WinKey = "npJi367lttpwmD1goZ1yOQ",
Arch = "x64",
VersionCode = 1,
AppointVersionCode = 0,
DevModelKey = "",
DevKey = ""
};
// Act
try
{
Console.WriteLine("Enviando solicitud WinUpgrade...");
// Imprimir información de la solicitud
Console.WriteLine("Información de la Solicitud:");
Console.WriteLine($" WinKey: {request.WinKey}");
Console.WriteLine($" Arch: {request.Arch}");
Console.WriteLine($" VersionCode: {request.VersionCode}");
Console.WriteLine($" AppointVersionCode: {request.AppointVersionCode}");
Console.WriteLine($" DevModelKey: {request.DevModelKey}");
Console.WriteLine($" DevKey: {request.DevKey}");
// Serializar el cuerpo de la solicitud e imprimir (usando el mismo resolver de contratos personalizado que el cliente)
string bodyStr = Newtonsoft.Json.JsonConvert.SerializeObject(request, _jsonSettings);
Console.WriteLine($"Cuerpo de la Solicitud Serializado: {bodyStr}");
Console.WriteLine("Nota: El cuerpo de la solicitud anterior coincide con el formato de serialización utilizado en la solicitud real");
var response = _client.WinUpgrade(request);
Console.WriteLine("¡Solicitud exitosa!");
Console.WriteLine($"response.code: {response.Code}");
Console.WriteLine($"response.msg: {response.Msg}");
Console.WriteLine($"response.traceId: {response.TraceId}");
// Imprimir datos de la respuesta (usando el mismo resolver de contratos personalizado que el cliente)
if (response.Data != null)
{
Console.WriteLine($"Datos: {Newtonsoft.Json.JsonConvert.SerializeObject(response.Data, _jsonSettings)}");
}
}
catch (Tea.TeaException ex)
{
Console.WriteLine("Solicitud fallida - Detalles de TeaException:");
Console.WriteLine($"Mensaje de Excepción: {ex.Message}");
// Usar reflexión para obtener propiedades internas de TeaException
var properties = ex.GetType().GetProperties();
foreach (var property in properties)
{
try
{
var value = property.GetValue(ex);
Console.WriteLine($"{property.Name}: {value}");
}
catch (Exception)
{
// Omitir propiedades que no se pueden acceder
}
}
// Imprimir la propiedad Data de la excepción
if (ex.Data != null)
{
Console.WriteLine("Datos de la Excepción:");
foreach (var key in ex.Data.Keys)
{
Console.WriteLine($" {key}: {ex.Data[key]}");
}
}
Console.WriteLine($"Pila de Seguimiento: {ex.StackTrace}");
}
catch (Exception ex)
{
Console.WriteLine($"Solicitud fallida: {ex.Message}");
Console.WriteLine($"Tipo de Excepción: {ex.GetType().Name}");
Console.WriteLine($"Pila de Seguimiento: {ex.StackTrace}");
}
// Assert: La prueba siempre pasa porque solo nos interesa imprimir los resultados
Assert.Pass("Se ha enviado la solicitud WinUpgrade, se han impreso los resultados");
}
}
}