Я обновил приложение веб-API до версий funkelnagelneu, используя это руководство:
Однако, пройдя все этапы (кажется, все это должно быть автоматизировано, во всяком случае), я попытался запустить его и получил: "Проект с типом типа вывода не может быть запущен напрямую"
Что в Братьях Сэма Хиллса Кофе здесь? Кто сказал, что это классная библиотека?
Итак, я открыл Project > Properties и поменял его (по какой-то причине он был помечен как "Class Library" - он либо был не вчера, а был и не работал) к типу вывода "Приложение Windows" ( "Консольное приложение" и "Библиотека классов" являются единственными другими опциями).
Теперь он не будет компилироваться, жалуясь: "Программа" c:\Platypus_Server_WebAPI\PlatypusServerWebAPI\PlatypusServerWebAPI\obj\Debug\PlatypusServerWebAPI.exe 'не содержит статического метода "Главная", подходящего для точки входа... "
Как я могу вернуть свое приложение для веб-API в соответствии с этим затруднительным положением?
UPDATE
Глядя в packages.config, две записи кажутся достойными подбородка:
<package id="Microsoft.AspNet.Providers" version="1.2" targetFramework="net40" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net40" />
Все остальные нацелены на net451. Это может быть проблема? Должен ли я удалить эти пакеты?
ОБНОВЛЕНИЕ 2
Я попытался удалить пакет Microsoft.Web.Infrastructure(его описание приводит меня к тому, что я не нуждаюсь в нем, а также он не имеет зависимостей) через диспетчер пакетов NuGet, но он говорит мне: "NuGet не удалось установите или удалите выбранный пакет в следующих проектах. [mine]"
ОБНОВЛЕНИЕ 3
Я снова повторил шаги и обнаружил, что пропустил один шаг. Мне пришлось изменить эту запись в приложении web.config. Файл:
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
(от "4.0.0.0" до "5.0.0.0" )
... но я все равно получаю тот же результат - он перестраивает/компилирует, но не запускается, а "Проект с типом вывода типа библиотеки классов не может быть запущен напрямую"
ОБНОВЛЕНИЕ 4
Размышляя о ошибке msg, что он не может напрямую открыть библиотеку классов, я подумал: "Конечно, вы не можете/не будете - это веб-приложение, а не проект. Поэтому я последовал предчувствию, закрыл проект и вновь открыл его как веб-сайт (вместо повторного открытия проекта).
Это привело меня дальше, по крайней мере; теперь я вижу YSOD:
Не удалось загрузить файл или сборку "System.Web.WebPages.Razor, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35" или одну из его зависимостей. Система не может найти указанный файл.
ОБНОВЛЕНИЕ 5
Примечание. Проект теперь (после его открытия как веб-сайт) с именем "localhost_48614"
И... больше нет папки "Ссылки"...?!?!?
Что касается этого YSOD, который я получаю, официальные инструкции (http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2) сказали сделать это, и я цитирую:
"Обновите все элементы, содержащие" System.Web.WebPages.Razor "из версии" 2.0.0.0 "на
версия "3.0.0.0" ".
ОБНОВЛЕНИЕ 6
Когда я сейчас выбираю "Инструменты" > "Диспетчер пакетов библиотек" > "Управление пакетами NuGet для решения", я получаю: "Операция не удалась. Не удалось найти каталог решений. Убедитесь, что решение было сохранено".
Итак, я сохраняю его, и он сохраняет его с этим напуганным новым именем (C:\Users\clay\Documents\Visual Studio 2013\Projects\localhost_48614\localhost_48614.sln)
Я получаю желтую полосу просветления в верхней части диспетчера пакетов NuGet me, "Некоторые пакеты NuGet отсутствуют в этом решении. Нажмите, чтобы восстановить из своего пакетов ".
Я делаю (нажмите кнопку "Восстановить", то есть), и он загружает недостающие пакеты... Я получаю 30 пакетов.
Я пытаюсь снова запустить приложение/сайт, и... прежний YSOD становится ошибкой компиляции:
Метод инициализации запуска до начала запуска. Тип запуска System.Web.Mvc.PreApplicationStartCode генерирует исключение со следующим сообщением об ошибке: Не удалось загрузить файл или сборку "System.Web.WebPages.Razor, Version = 3.0.0.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35 'или одна из ее зависимостей. Система не может найти указанный файл.
Argghhhh!!! (и это даже не разговор-а-пиратский день).
ОБНОВЛЕНИЕ 7
Мне все еще интересно, почему Шалтай-Болтай упал и сломал свою корону (так сказать), но я, наконец, бросил полотенце и создал новый проект, копируя и вставляя код - и он отлично работает (VS 2013 и веб-API, с методами REST, вызванными из клиентского приложения VS 2008,.NET 3.5).