visual studio paso net crear asp c# asp.net-web-api asp.net-core visual-studio-2015

c# - paso - crear web api visual studio 2017



¿Por qué agregar una dependencia en mi proyecto de API web(ASP.NET v5) no funciona por completo? (1)

Estoy usando Visual Studio 2015 CTP 6 en Windows 8.1.

Intento escribir una API web utilizando ASP.NET v5, con su nuevo formato de archivo de proyecto. Agregué una referencia a Noda Time v1.3.0 a mi archivo project.json , y el editor en Visual Studio lo recoge, pero el proceso de compilación falla.

Rece receta, desde cero:

  • Abierto VS 2015 CTP 6
  • Crear nuevo proyecto en una nueva solución:
    • Seleccione la plantilla de proyecto de aplicación web ASP.NET
    • Seleccione "ASP.NET 5 Preview Web API" en el cuadro de diálogo de la plantilla
  • Construya el proyecto, solo para confirmar que todo está correcto
  • Abra project.json y en la sección (mal formateada) "dependencias", agregue una línea adicional al inicio (para evitar tener que agregar una coma a otra línea):

    "NodaTime": "1.3.0",

  • Controllers/ValuesController.cs abiertos Controllers/ValuesController.cs
  • Edite el método Get() parámetros para que el cuerpo sea:

    return DateTimeZoneProviders.Tzdb.Ids;

    • DateTimeZoneProviders tendrá garabatos rojos, lo cual es razonable, todavía no tenemos una directiva de using .
  • Coloque el cursor en DateTimeZoneProviders y DateTimeZoneProviders Ctrl + . - se le debería ofrecer " using NodaTime; " como una solución potencial ... por lo que Intellisense (y por lo tanto Roslyn) definitivamente sabe acerca de la dependencia.
  • Acepta la solución. Los garabatos desaparecerán, todo está bien, ¿verdad?
  • Intente crear la solución: debe obtener dos errores, básicamente indicando que la dependencia no se ha resuelto.

En Explorer, si busca en el directorio de la solución BugDemo , encontrará un directorio artifacts/obj/BugDemo/Debug/ProjectRawReferences contiene los directorios "ASP.NET Core 5.0" y "ASP.NET 5.0", ambos tienen mucho de DLL en ... pero no en Noda Time.

Hacer clic derecho en el proyecto y seleccionar "Restaurar paquetes" no soluciona esto.

Cuando construyo el mismo proyecto usando Project K, una kpm restore selecciona Noda Time, y si agrega una sección a project.json como a continuación, entonces k web trabaja en la k web y visita http://localhost:5001/api/values le mostramos todos los ID de zonas horarias de TZDB:

"commands": { "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5001" },

Entonces, ¿qué estoy haciendo mal? ¿O es solo un error?


Cuando construyas, revisa la columna "Proyecto": nota que la compilación que está fallando es "ASP.NET Core 5.0" (no "ASP.NET 5.0"). En el menú desplegable superior izquierdo del editor de código, puede elegir diferentes vistas: si selecciona el "ASP.NET Core 5.0", verá que el espacio de nombre NodaTime no está definido.

Parece que las nuevas plantillas de proyectos ASP.NET están creando aplicaciones de múltiples destinos, tanto aspnet50 como aspnetcore50.

ASP.NET 5.0 está (actualmente) basado en .NET 4.5.x, por lo que el dispositivo portátil NodaTime (net4) satisface esa plataforma. ASP.NET Core 5.0 está basado en el nuevo CoreClr (aspnetcore50), y no hay binarios en la biblioteca NodaTime que lo soporte.

Para resolverlo, solo puede soltar el soporte para CoreClr en su aplicación eliminando la entrada "aspnetcore50" en project.json en "frameworks":

"frameworks": { "aspnet50": { } //"aspnetcore50": { } },

Ahora su aplicación debería compilar solo para ASP.NET 5.0 y no para CoreClr.