Почему `do tnet new webapi` создает для меня проект, отличный от других людей? - PullRequest
0 голосов
/ 18 марта 2020

Привет. Я следую инструкциям из учебника. Используя dotnet new webapi, я получаю проект, отличный от показанных на уроке, и с компьютера другого человека, на котором я это тестировал. Мы получаем в основном те же файлы, но у меня есть один дополнительный WeatherForcast.cs, и вместо ValuesController.cs я получаю WeatherForcastController.cs с совершенно другим кодом, который я выложу внизу.

Есть также некоторые меньшие различия в Program.cs и Startup.cs

Чем объясняется эта разница? Как мне сгенерировать файлы, как я пытаюсь, из примеров?

ОТВЕТ: Ответ заключается в том, что по умолчанию он был установлен. NET SDK 3.1, который я установил, но в этом руководстве я использую. NET SDK 2.2. Выполнение команды dotnet new webapi --framework netcoreapp2.2 дает мне версию этого веб-интерфейса, который я ищу.


Мой контроллер WeatherForcastController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;

namespace Testing.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        private static readonly string[] Summaries = new[]
        {
            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
        };

        private readonly ILogger<WeatherForecastController> _logger;

        public WeatherForecastController(ILogger<WeatherForecastController> logger)
        {
            _logger = logger;
        }

        [HttpGet]
        public IEnumerable<WeatherForecast> Get()
        {
            var rng = new Random();
            return Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateTime.Now.AddDays(index),
                TemperatureC = rng.Next(-20, 55),
                Summary = Summaries[rng.Next(Summaries.Length)]
            })
            .ToArray();
        }
    }
}

Пример и другой контроллер компьютера ValuesController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;

namespace CretaceousPark.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        // GET api/values
        [HttpGet]
        public ActionResult<IEnumerable<string>> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/values/5
        [HttpGet("{id}")]
        public ActionResult<string> Get(int id)
        {
            return "value";
        }

        // POST api/values
        [HttpPost]
        public void Post([FromBody] string value)
        {
        }

        // PUT api/values/5
        [HttpPut("{id}")]
        public void Put(int id, [FromBody] string value)
        {
        }

        // DELETE api/values/5
        [HttpDelete("{id}")]
        public void Delete(int id)
        {
        }
    }
}

Ответы [ 3 ]

1 голос
/ 18 марта 2020

Поскольку у вас есть. net версия core 3.x SDK на вашем компьютере и на других компьютерах, на которых создается контроллер ценностей, 2.K SDK.

1 голос
/ 18 марта 2020

Как уже указывалось в других ответах, это связано с различием в используемых SDK. Даже если у вас установлен тот же SDK, но установлен более новый, по умолчанию будет использоваться более новый SDK. Однако вы можете закрепить версию SDK, которая будет использоваться командой dotnet new, добавив файл global.json в каталог, откуда вы запускаете команду, со следующим содержимым:

{
  "sdk": {
    "version": "2.0.0"
  }
}

Обязательно установите значение version, указанное в руководстве.

Подробнее об этом поведении можно прочитать в официальной документации .

1 голос
/ 18 марта 2020

Он основан на установленной версии. NET Core SDK. Если вы хотите точно следовать учебнику, установите именно эту версию. И избавиться от любой версии, которая новее. После изучения этого руководства установите последнюю версию.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...