Не удается найти метод app.UseStaticFiles()

Я следую этому руководству и шагу 4 меня попросили добавить три строки в файл project.json (что я и сделал, а затем запустил dotnet restore, получив множество обновленных пакетов).

Когда я ввожу три строки в методе Configure, я получаю красные линии на всех из них. Методы не распознаются, IntelliSense не предоставляется и т.д.

Я также заметил, что в примере из руководства сигнатура метода принимает только один параметр IApplicationBuilder, тогда как тот, который я сгенерировал (используя команду yo aspnet), выглядит так: это.

Configure(IApplicationBuilder, IHostingEnvironment, ILoggerFactory);

Я не уверен, как это решить. Я предполагаю, что есть новая версия чего-то в процессе (Yo, Generators, Core и т. д.), но я не совсем уверен.

Я также нашел этот блог, где метод подпись похожа на ту, что я получаю. Однако автор предлагает тот же синтаксис, который у меня не работает. Я предполагаю, что это вопрос ссылки на неправильные библиотеки. Как мне подойти к вопросу?


person Konrad Viltersten    schedule 12.11.2016    source источник
comment
Во-первых, в учебнике используется устаревшая версия, по крайней мере, скриншоты rc1, от которых вам больше не следует зависеть. Все, что старше rc2, вы можете смело выбрасывать, потому что изменения с rc1 на rc2 были слишком большими (перешел с dnx на dotnet cli, также изменились пакеты и пространства имен, а также довольно много фрагментов API)   -  person Tseng    schedule 13.11.2016
comment
@Tseng Это так не круто... Я потратил большую часть субботы на то, чтобы трахаться за столом, чтобы понять все это, потому что это не имело никакого смысла... Надо было спросить раньше, хе-хе. Спасибо! Опубликуйте это тоже как ответ. Это нужно принять.   -  person Konrad Viltersten    schedule 13.11.2016
comment
@Tseng Все эти разговоры о пакете Yo также устарели или он все еще используется? я не могу сказать...   -  person Konrad Viltersten    schedule 13.11.2016
comment
не знаю как у вас, никогда не пользовался. Я всегда создаю свои проекты в Visual Studio 2015. Зависит от того, какой шаблон он создает, посмотрите на зависимости. Если все зависимости Microsoft.AspNet.*, вы можете удалить их как устаревшие. Если они Microsoft.AspNetCore.*, то они как минимум rc2 или rtm (что можно уточнить по номеру версии)   -  person Tseng    schedule 13.11.2016
comment
@Tseng Это AspNetCore, да! Кроме того, еще раз, это должно быть ответом, а не комментарием.   -  person Konrad Viltersten    schedule 13.11.2016


Ответы (3)


Судя по снимкам экрана в связанном учебнике, речь идет об ASP.NET Core RC1 (тогда он назывался ASP.NET 5 r1-final). Вы можете легко узнать это по именам пакетов и пространств имен. Microsoft.AspNet.* используется до rc1.

Начиная с RC2, пакеты были переименованы в Microsoft.AspNetCore.*, чтобы было понятнее их новый фреймворк и не очень совместимый с устаревшей ASP.NET.

UseIISPlatformHandler() больше нет, теперь это UseIISIntegration() в методе Main(...):

public class Program
{
    public static void Main(string[] args)
    {
        var host = new WebHostBuilder()
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .Build();

        host.Run();
    }
}

И пакеты пакет Microsoft.AspNetCore.Server.IISIntegration": "1.0.0" и "Microsoft.AspNetCore.Server.Kestrel": "1.0.1". Для статических файлов это: "Microsoft.AspNetCore.StaticFiles": "1.0.0".

Для перегрузки Configure: Configure(IApplicationBuilder); используется по умолчанию, но вы можете добавить любой другой тип, который зарегистрирован в системе внедрения зависимостей (в методе ConfigureServices), так как это условная система (startup.cs).

person Tseng    schedule 12.11.2016

Для ядра Asp.Net MVC вам необходимо установить пакет Nuget.

пакет установки "Microsoft.AspNetCore.StaticFiles"

person Dhanuka777    schedule 17.03.2017

Это руководство устарело. Обновленное ядро ​​.Net больше не использует project.json, что очень жаль. Вместо этого он теперь является частью файла csproj. И чтобы добавить библиотеку статических файлов, вы должны добавить ее в проект с помощью диспетчера пакетов nuget. И когда вы перестроите, вы увидите запись в файле csproj для этой библиотеки. Я думаю, что проект project.json был отличной идеей, которая была встроена в основную методологию подписки, поскольку она позволила бы intellisense включиться, чтобы помочь вам выбрать из доступных библиотек. И поскольку файл csproj нельзя редактировать напрямую в решении, вы теряете эту функцию.

person user3229989    schedule 31.03.2017