Jak mogę zdiagnozować brakujące zależności (lub inne awarie Ładowarki) w dnx?

Próbuję uruchomić zmodyfikowaną wersję próbki HelloWeb dla ASP.NET vNext na DNX przy użyciu Kestrel. Rozumiem, że to jest bardzo dużo na krawędzi, ale mam nadzieję, że ASP.NET zespół przynajmniej utrzymałby najprostszą możliwą aplikację internetową działającą :)

Środowisko:

  • Linux (Ubuntu, prawie)
  • Mono 3.12.1
  • DNX 1.0.0-beta4-11257 (ja też mam 11249)

Kod"Web app", w Startup.cs:

using Microsoft.AspNet.Builder;
public class Startup
{
    public void Configure(IApplicationBuilder app)
    {
        app.UseWelcomePage();
    }
}

Project config, in project.json:

{
  "dependencies": {
    "Kestrel": "1.0.0-beta4",
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta4",
    "Microsoft.AspNet.Hosting": "1.0.0-beta4",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta4",
    "Microsoft.AspNet.StaticFiles": "1.0.0-beta4",
    "Microsoft.Framework.Runtime": "1.0.0-beta4",
    "Microsoft.Framework.Runtime.Common": "1.0.0-beta4",
    "Microsoft.Framework.Runtime.Loader": "1.0.0-beta4",
    "Microsoft.Framework.Runtime.Interfaces": "1.0.0-beta4",
  },
  "commands": {
    "kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5004"
  },
  "frameworks": {
    "dnx451": {}
  }
}

kpm restore wygląda na to, że działa dobrze.

Kiedy próbuję uruchomić, dostaję wyjątek sugerujący, że Microsoft.Framework.Runtime.IApplicationEnvironment nie można znaleźć. Wiersz poleceń i błąd (nieco sformatowany)

.../HelloWeb$ dnx . kestrel
System.IO.FileNotFoundException: Could not load file or assembly 
'Microsoft.Framework.Runtime.IApplicationEnvironment,
  Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
or one of its dependencies.
File name: 'Microsoft.Framework.Runtime.IApplicationEnvironment,
  Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
  at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke 
    (System.Reflection.MonoMethod,object,object[],System.Exception&)
  at System.Reflection.MonoMethod.Invoke 
    (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder,
     System.Object[] parameters, System.Globalization.CultureInfo culture)
    [0x00000] in <filename unknown>:0

Chociaż oczywiście najbardziej palącą potrzebą jest naprawienie tego, byłbym również wdzięczny za radę, jak przejść diagnozować, co dzieje się źle, abym mógł sam naprawić podobne problemy w przyszłości. (To również może sprawić, że to pytanie będzie bardziej przydatne do inni też.)

Znalazłem Microsoft.Framework.Runtime.IApplicationEnvironment w Microsoft.Framework.Runtime.Interfaces źródło assembly i wydaje się, że nie zmieniło się to ostatnio. Nie jest jasne, dlaczego wyjątek pokazuje nazwę tak, jakby był całym złożeniem, a nie tylko interfejsem w innym złożeniu. zgaduję, że to Może być spowodowane neutralnymi interfejsami montażowymi , ale nie jest to jasne z błędu. ([AssemblyNeutral] nie żyje, więc to nie to...)

Author: Jon Skeet, 2015-03-12

6 answers

Dobre pytanie. W przypadku konkretnego problemu wygląda na to, że masz niedopasowanie w rozwiązanych zależnościach. Kiedy takie rzeczy się zdarzają, prawdopodobnie dlatego, że używasz aplikacji na niekompatybilnym dnx. Wciąż wprowadzamy bardzo duże zmiany, więc jeśli kiedykolwiek zauważysz brakujące metody lub brakujące typy, są szanse, że uruchomisz betaX pakiety i betaY dnx lub odwrotnie.

Jeszcze dokładniej, neutralne Interfejsy montażowe zostały usunięte w beta4, ale to wygląda na to, że uruchomiona aplikacja nadal ich używa.

Mamy w planach zrobić to tak, aby Pakiety mogły oznaczać Minimalne dnx wymagane do uruchomienia, aby Komunikat o błędzie był bardziej jasny. Również w miarę upływu czasu, zmiany łamiące zanikną.

Nie jest to jednak żaden problem, ponieważ nie jest to możliwe w przypadku, gdy serwer dnx nie jest w stanie skonfigurować systemu. NET.]}

Zależności, które wkładasz do {[9] } to najwyższy poziom tylko. Wersje są również zawsze minima (to tak jak pakiet NuGet). Oznacza to, że kiedy podajesz Foo 1.0.0-beta4, to tak naprawdę podajesz Foo >= 1.0.0-beta4. Oznacza to, że jeśli poprosisz o MVC 0.0.1, a minimalna wersja w skonfigurowanym kanale to MVC 3.0.0, otrzymasz tę. My również nigdy nie wyświetlamy Twojej wersji, chyba że ją podasz. Jeśli poprosisz o 1.0.0 i On istnieje, otrzymasz 1.0.0 nawet jeśli istnieją nowsze wersje. Podanie pustych wersji jest zawsze złe i będzie zakazany w późniejszych wersjach.

Jest nowa funkcja, którą wprowadzamy do nuget o nazwie floating versions. Dziś działa tylko na tagu prerelease, ale w następnej wersji będzie działać na kolejnych częściach wersji. Jest to podobne do składni npm i Gem do określania zakresów wersji w pliku specyfikacji pakietu.

1.0.0-* - czyli podaj mi najwyższą wersję pasującą do prefiksu (zgodnie z semantycznymi regułami wersjonowania) lub jeśli nie ma wersji pasującej do tego prefix, użyj normalnego zachowania i daj mi najniższą wersję > = podaną wersję.

Po uruchomieniu restore w najnowszych kompilacjach, zostanie zapisany plik o nazwie project.lock.json. Plik ten będzie miał Transitional closure of dependencies for all target framework defined in project.json.

Gdy coś takiego zawiedzie, możesz wykonać następujące czynności:

Przyjrzyj się rozwiązanym zależnościom używając kpm list. To pokaże Ci rozwiązane wersje pakietów, do których odwołuje się twój projekt i jaka zależność go wciągnęła. np. jeśli A - > B, wyświetli się:

A
  -> B
B
 ->

Rzeczywisty wynik listy KPM:

Lista zależności Dla ClassLibrary39 (C:\Users\davifowl\Documents\Visual Studio 14 \ Projects\ClassLibrary39 \ src \ ClassLibrary39 \ project.json)

[Target framework DNX,Version=v4.5.1 (dnx451)]

 framework/Microsoft.CSharp 4.0.0.0
    -> ClassLibrary39 1.0.0
 framework/mscorlib 4.0.0.0
    -> ClassLibrary39 1.0.0
 framework/System 4.0.0.0
    -> ClassLibrary39 1.0.0
 framework/System.Core 4.0.0.0
    -> ClassLibrary39 1.0.0
*Newtonsoft.Json 6.0.1
    -> ClassLibrary39 1.0.0

[Target framework DNXCore,Version=v5.0 (dnxcore50)]

*Newtonsoft.Json 6.0.1
    -> ClassLibrary39 1.0.0
 System.Runtime 4.0.20-beta-22709
    -> ClassLibrary39 1.0.0

* oznacza bezpośrednią zależność.

Jeśli masz działające visual studio (które zrywa teraz z DNX), możesz spojrzeć na węzeł reference. Ma te same dane reprezentowane wizualnie:

Węzeł linków

Spójrzmy jak wygląda awaria zależności:

Oto projekt.json
{
    "version": "1.0.0-*",
    "dependencies": {
        "Newtonsoft.Json": "8.0.0"
    },

    "frameworks" : {
        "dnx451" : { 
            "dependencies": {
            }
        },
        "dnxcore50" : { 
            "dependencies": {
                "System.Runtime": "4.0.20-beta-22709"
            }
        }
    }
}

Newtonsoft.Json 8.0.0 nie istnieje. Tak więc uruchamianie kpm restore pokazuje, co następuje:

Tutaj wpisz opis obrazka

Podczas diagnozowania, kiedy przywracanie mogło się nie udać, spójrz na żądania HTTP wykonane, mówią ci, w jakich skonfigurowanych źródłach pakietów wyglądał kpm. Zauważ, że na powyższym obrazku jest CACHE żądanie. Jest to wbudowane buforowanie oparte na typie resource (nupkg lub nuspec) i ma konfigurowalny TTL (patrz kpm restore --help). Jeśli chcesz zmusić kpm do naciśnięcia zdalnego źródła NuGet, Użyj flagi --no-cache:

KPM restore --no-cache

Te błędy pojawiają się również w Visual Studio w oknie wyjściowym dziennika menedżera pakietów:

Tutaj wpisz opis obrazka

Uwaga!

Źródła Pakietów

Opiszę sposób NuGet.config działa już teraz (co prawdopodobnie zmieni się w przyszłości). Domyślnie masz NuGet.config with the default NuGet.org źródło skonfigurowane globalnie w %appdata%\NuGet\NuGet.Config. Możesz zarządzać tymi globalnymi źródłami w programie visual studio lub za pomocą narzędzia wiersza poleceń NuGet. Podczas diagnozowania błędów zawsze należy spojrzeć na swoje skuteczne źródła (te wymienione w wyjściu kpm).

Czytaj więcej o NuGet.config here

Powrót do rzeczywistości:

Gdy zależności są nierozwiązane, uruchomienie aplikacji da ci to:

> dnx . run
System.InvalidOperationException: Failed to resolve the following dependencies for target framework 'DNX,Version=v4.5.1':
   Newtonsoft.Json 8.0.0

Searched Locations:
  C:\Users\davifowl\Documents\Visual Studio 14\Projects\ClassLibrary39\src\{name}\project.json
  C:\Users\davifowl\Documents\Visual Studio 14\Projects\ClassLibrary39\test\{name}\project.json
  C:\Users\davifowl\.dnx\packages\{name}\{version}\{name}.nuspec
  C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\{name}.dll
  C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Facades\{name}.dll
  C:\WINDOWS\Microsoft.NET\assembly\GAC_32\{name}\{version}\{name}.dll
  C:\WINDOWS\Microsoft.NET\assembly\GAC_64\{name}\{version}\{name}.dll
  C:\WINDOWS\Microsoft.NET\assembly\GAC_MSIL\{name}\{version}\{name}.dll

Try running 'kpm restore'.

   at Microsoft.Framework.Runtime.DefaultHost.GetEntryPoint(String applicationName)
   at Microsoft.Framework.ApplicationHost.Program.ExecuteMain(DefaultHost host, String applicationName, String[] args)
   at Microsoft.Framework.ApplicationHost.Program.Main(String[] args)

Runtime w zasadzie próbuje aby sprawdzić, czy cały wykres zależności został rozwiązany przed próbą uruchomienia. Jeśli sugeruje uruchomienie kpm restore, to dlatego, że nie może znaleźć wymienionych zależności.

Innym powodem, dla którego możesz uzyskać ten błąd, jest to, że używasz niewłaściwego smaku dnx. Jeśli aplikacja podaje tylko dnx451 i próbujesz uruchomić CoreCLR dnx, może wystąpić podobny problem. Zwróć szczególną uwagę na ramy docelowe w komunikacie o błędzie:

Do biegania:

dnx4x - runs on dnx-clr-{etc}
dnxcore50 - runs on dnx-coreclr-{etc}

Kiedy próbujesz uruchomić, powinieneś pamiętać, że mentalne mapowanie z clr do docelowego frameworka zdefiniowanego w twoim project.json.

To również pojawia się w Visual Studio pod węzłem reference: Nierozwiązane zależności

Węzły oznaczone jako żółte są nierozwiązane.

Te również pojawiają się na liście błędów:

Lista błędów nierozwiązane zależności

Budynek

Te błędy pojawiają się również podczas budowania. Podczas budowania z linii poleceń, wyjście jest bardzo wyraziste i może być bardzo przydatne przy diagnozowaniu problemów:

> kpm build

Building ClassLibrary39 for DNX,Version=v4.5.1
  Using Project dependency ClassLibrary39 1.0.0
    Source: C:\Users\davifowl\Documents\Visual Studio 14\Projects\ClassLibrary39\src\ClassLibrary39\project.json

  Using Assembly dependency framework/mscorlib 4.0.0.0
    Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\mscorlib.dll

  Using Assembly dependency framework/System 4.0.0.0
    Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.dll

  Using Assembly dependency framework/System.Core 4.0.0.0
    Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Core.dll

  Using Assembly dependency framework/Microsoft.CSharp 4.0.0.0
    Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Microsoft.CSharp.dll


Building ClassLibrary39 for DNXCore,Version=v5.0
  Using Project dependency ClassLibrary39 1.0.0
    Source: C:\Users\davifowl\Documents\Visual Studio 14\Projects\ClassLibrary39\src\ClassLibrary39\project.json

  Using Package dependency System.Console 4.0.0-beta-22709
    Source: C:\Users\davifowl\.dnx\packages\System.Console\4.0.0-beta-22709
    File: lib\contract\System.Console.dll

  Using Package dependency System.IO 4.0.10-beta-22231
    Source: C:\Users\davifowl\.dnx\packages\System.IO\4.0.10-beta-22231
    File: lib\contract\System.IO.dll

  Using Package dependency System.Runtime 4.0.20-beta-22231
    Source: C:\Users\davifowl\.dnx\packages\System.Runtime\4.0.20-beta-22231
    File: lib\contract\System.Runtime.dll

  Using Package dependency System.Text.Encoding 4.0.10-beta-22231
    Source: C:\Users\davifowl\.dnx\packages\System.Text.Encoding\4.0.10-beta-22231
    File: lib\contract\System.Text.Encoding.dll

  Using Package dependency System.Threading.Tasks 4.0.10-beta-22231
    Source: C:\Users\davifowl\.dnx\packages\System.Threading.Tasks\4.0.10-beta-22231
    File: lib\contract\System.Threading.Tasks.dll

Wyjście pokazuje wszystkie złożenia przekazane do kompilatora z Pakietów i odniesień do projektów. Kiedy zaczynasz otrzymywać błędy kompilacji, warto zajrzeć tutaj, aby upewnić się, że pakiet, którego używasz, faktycznie działa na tej docelowej platformie.

Oto przykład pakietu, który nie działa na dnxcore50:]}
{
    "version": "1.0.0-*",
    "dependencies": {
        "Microsoft.Owin.Host.SystemWeb": "3.0.0"
    },

    "frameworks": {
        "dnx451": {
            "dependencies": {
            }
        },
        "dnxcore50": {
            "dependencies": {
                "System.Console": "4.0.0-beta-22709"
            }
        }
    }
}

Microsoft.Owin.Gospodarz.SystemWeb Wersja 3.0.0 nie ma żadnych zespołów, które działają na dnxcore50 (weź spójrz na rozpakowany folder lib pakietu). Kiedy biegniemy kpm build:

Brakujące zespoły na dnxcore50

Zauważ, że jest napisane " używanie pakietu Microsoft.Owin.Gospodarz.SystemWeb "ale nie ma"File:". To może być przyczyną niepowodzenia budowy.

Here ends my brain dump

 143
Author: davidfowl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-22 15:34:51

Nadal Nie wiem do końca co było nie tak, ale teraz mam serię kroków, aby przynajmniej ułatwić wypróbowanie rzeczy:

  • w razie wątpliwości należy ponownie zainstalować dnx
    • Usuwanie pamięci podręcznej pakietu może być pomocne
  • Sprawdź ~/.config/NuGet.config, aby upewnić się, że używasz odpowiednich kanałów NuGet

Skończyło się na użyciu następującego wiersza poleceń, aby przetestować różne opcje w rozsądnie czysty sposób:

rm -rf ~/.dnx/packages && rm -rf ~/.dnx/runtimes && dnvm upgrade && kpm restore && dnx . kestrel

Wygląda na to, że mój problem był naprawdę ze względu na błędne wersje instalowanych zależności. Numer wersji "1.0.0-beta4" najwyraźniej różni się od "1.0.0-beta4-*". Na przykład, zależność Kestrel została zainstalowana w wersji 1.0.0-beta4-11185, gdy tylko została określona jako 1.0.0-beta4, ale Wersja 1.0.0-beta4-11262 z -* na końcu. Chciałem wyraźnie określić beta4, aby uniknąć przypadkowego użycia kompilacji beta3 z

Następująca konfiguracja projektu działa poprawnie:

{
  "dependencies": {
    "Kestrel": "1.0.0-beta4-*",
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta4-*",
    "Microsoft.AspNet.Hosting": "1.0.0-beta4-*",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta4-*",
  },
  "commands": {
    "kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5004"
  },
  "frameworks": {
    "dnx451": {}
  }
}
 17
Author: Jon Skeet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-12 12:41:13

Możesz ustawić var env o nazwie DNX_TRACE na 1, aby zobaczyć więcej informacji diagnostycznych. Uwaga, to jest dużo więcej informacji!

 8
Author: Eilon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-13 00:30:26

Aby go uruchomić zmodyfikowałem mój project.json .. teraz wygląda tak:

{
"dependencies": {
    "Kestrel": "1.0.0-*",
    "Microsoft.AspNet.Diagnostics": "1.0.0-*",
    "Microsoft.AspNet.Hosting": "1.0.0-*",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-*",
    "Microsoft.AspNet.StaticFiles": "1.0.0-*"
},
"commands": {
    "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5001",
    "kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5004"
},
"frameworks": {
    }
}

Kluczem wydawała się sekcja frameworków.

Również zmiana nazwy zmieniła sposób działania {[5] } tak, że teraz dnx . web lub dnx . kestrel

Update-bit more info

Dziwne, po uruchomieniu bez zdefiniowanych frameworków poszło i dostało kilka dodatkowych rzeczy, gdy robiłem kpm restore:

...
Installing Microsoft.Framework.Logging 1.0.0-beta4-11001
Installing Microsoft.Framework.Logging.Interfaces 1.0.0-beta4-11001
Installing Microsoft.Framework.DependencyInjection.Interfaces 1.0.0-beta4-11010
Installing Microsoft.Framework.DependencyInjection 1.0.0-beta4-11010
Installing Microsoft.Framework.ConfigurationModel 1.0.0-beta4-10976
Installing Microsoft.Framework.ConfigurationModel.Interfaces 1.0.0-beta4-10976
Installing Microsoft.AspNet.Hosting.Interfaces 1.0.0-beta4-11328
Installing Microsoft.AspNet.FeatureModel 1.0.0-beta4-11104
Installing Microsoft.AspNet.Http 1.0.0-beta4-11104
Installing Microsoft.AspNet.FileProviders.Interfaces 1.0.0-beta4-11006
Installing Microsoft.Framework.Caching.Interfaces 1.0.0-beta4-10981
Installing Microsoft.AspNet.FileProviders 1.0.0-beta4-11006
Installing Microsoft.AspNet.Http.Core 1.0.0-beta4-11104
Installing Microsoft.AspNet.WebUtilities 1.0.0-beta4-11104
Installing Microsoft.Net.Http.Headers 1.0.0-beta4-11104
Installing Microsoft.AspNet.Http.Interfaces 1.0.0-beta4-11104
Installing Microsoft.Framework.Runtime.Interfaces 1.0.0-beta4-11257
Installing Microsoft.AspNet.Server.Kestrel 1.0.0-beta4-11262
Installing Microsoft.Net.Http.Server 1.0.0-beta4-11698
Installing Microsoft.Net.WebSockets 1.0.0-beta4-11698
Installing Microsoft.Net.WebSocketAbstractions 1.0.0-beta4-10915
Installing Microsoft.Framework.WebEncoders 1.0.0-beta4-11104
Installing Microsoft.Framework.OptionsModel 1.0.0-beta4-10984
Installing Microsoft.AspNet.Http.Extensions 1.0.0-beta4-11104
Installing Microsoft.AspNet.Diagnostics.Interfaces 1.0.0-beta4-12451
Installing Microsoft.AspNet.RequestContainer 1.0.0-beta4-11328

.. potem wszystko poszło dobrze. Następnie przełączyłem się z powrotem w sekcji framework

"frameworks": {
    "dnx451": {}
}

.. oraz to nadal działa, podczas gdy wcześniej to wyrzucić błąd !

Bardzo dziwne!

(im running 1.0.0-beta4-11257)

Dalsza aktualizacja

Uruchomiłem nową instancję Ubuntu i dostałem ten sam błąd co Ty .. Myślałem, że problem może być spowodowany przez to, że próbuje pobrać pakiety z nuget.org, a nie myget.org (który ma nowsze rzeczy), więc wrzuciłem NuGet.Config do katalogu głównego projektu..

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="AspNetVNext" value="https://www.myget.org/F/aspnetvnext/" />
    <add key="NuGet" value="https://nuget.org/api/v2/" />
  </packageSources>
</configuration>

.. wydaje się, że naprawił to dla mnie, uzyskując poprawne wersje (po innym kpm restore).

 3
Author: Stephen Pope,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-12 12:31:05

Te dni, wszystkie moje package.json wersje kończą się "-rc2-*"

(jedynymi wyjątkami jakie widziałem do tej pory są Microsoft.Framework.Configuration pakiety, które muszą być "1.0.0-rc1-*" lub "1.0.0-*")

Jeśli chodzi o" version trains", o którym wspomina @davidfowl, wydaje się, że między beta8 a rc2 zniknęło wiele bólu.

dnvm upgrade -u -arch x64 -r coreclr

Miałem najwięcej szczęścia na coreclr z tymi 2 kanałami NuGet:

"https://www.myget.org/F/aspnetvnext/"
"https://nuget.org/api/v2/"

Kiedy ja mam brakujące problemy z pakietem, w 90% przypadków są to te same winowajcy:

Newtonsoft.Json
Ix-Async
Remotion.Linq

Przez większość czasu mogę je obejść wymuszając główny NuGet.org feed:

dnu restore;
dnu restore -s https://nuget.org/api/v2

Oto mój roboczy config.json:

{
"dependencies": {
    "Microsoft.AspNet.Diagnostics": "1.0.0-rc2-*",
    "Microsoft.AspNet.Diagnostics.Entity": "7.0.0-rc2-*",
    "Microsoft.AspNet.Hosting": "1.0.0-rc2-*",
    "Microsoft.AspNet.Http": "1.0.0-rc2-*",
    "Microsoft.AspNet.Http.Abstractions": "1.0.0-rc2-*",
    "Microsoft.AspNet.Mvc.Core": "6.0.0-rc2-*",
    "Microsoft.AspNet.Mvc.Razor": "6.0.0-rc2-*",
    "Microsoft.AspNet.Owin": "1.0.0-rc2-*",
    "Microsoft.AspNet.Routing": "1.0.0-rc2-*",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc2-*",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-rc2-*",
    "Microsoft.AspNet.Session": "1.0.0-rc2-*",
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc2-*",
    "EntityFramework.Commands": "7.0.0-rc2-*",
    "EntityFramework.Core": "7.0.0-rc2-*",
    "EntityFramework.InMemory": "7.0.0-rc2-*",
    "EntityFramework.MicrosoftSqlServer": "7.0.0-rc2-*",
    "EntityFramework.MicrosoftSqlServer.Design": "7.0.0-rc2-*",
    "EntityFramework.Relational": "7.0.0-rc2-*",
    "EntityFramework7.Npgsql": "3.1.0-beta8-2",
    "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc2-*",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc2-*",
    "Microsoft.Extensions.DependencyInjection": "1.0.0-rc2-*",
    "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc2-*",
    "Microsoft.Framework.Configuration.CommandLine": "1.0.0-*",
    "Microsoft.Framework.Configuration.EnvironmentVariables": "1.0.0-*",
    "Microsoft.Framework.Configuration.Json": "1.0.0-*"
},
"commands": {
    "ef": "EntityFramework.Commands",
    "dev": "Microsoft.AspNet.Hosting --ASPNET_ENV Development --server Microsoft.AspNet.Server.Kestrel --server.urls http://localhost:5004"
},
"frameworks": {
    "dnxcore50": {}
}
}
 2
Author: CrazyPyro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-16 19:56:48

Miałem problemy z brakiem zależności, a także próbowałem uspokoić odniesienia dnxcore50 i dnx451.

Jeśli dobrze rozumiem to "zależności": {} są dzielone między frameworki.

Następnie "zależności": {} wewnątrz "frameworków": są specyficzne dla tego frameworka.

Dnxcore50 jest modularnym środowiskiem uruchomieniowym (samodzielnym), więc zasadniczo zawiera wszystkie podstawowe środowiska uruchomieniowe potrzebne do uruchomienia programu w przeciwieństwie do klasycznego. NET framework, gdzie masz rozproszone podstawowe zależności gdzieś indziej.

Więc z tym powiedział, że chciałem trzymać się minimalnego podejścia okrywać postanowiłem hostować na Macu lub Linuksie w pewnym momencie.

Update Napotkałem dziwne problemy z zależnościami z widokami cshtml, po prostu poszedłem z dnx451 na razie.

To mój projekt.json
{
"webroot": "wwwroot",
"version": "1.0.0-*",

"dependencies": {
    "System.Runtime": "4.0.10",
    "Microsoft.AspNet.Hosting": "1.0.0-beta4",
    "Microsoft.AspNet.Mvc": "6.0.0-beta4",
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta6-12075",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta6-12457",
    "Microsoft.Framework.DependencyInjection": "1.0.0-beta4",
    "Microsoft.Framework.DependencyInjection.Interfaces": "1.0.0-beta5"
 },

"commands": {
"web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://admin.heartlegacylocal.com"  },

"frameworks": {
"dnx451": { }
 }
},

"publishExclude": [
"node_modules",
"bower_components",
"**.xproj",
"**.user",
"**.vspscc"
],
"exclude": [
  "wwwroot",
  "node_modules",
  "bower_components"
  ]
}
 1
Author: wchoward,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-16 19:52:28