2015-09-04 19 views
5

Mam projekt ASP.Net 5 MVC 6, który korzysta z kilku bibliotek klasy innej niż DNX. Te biblioteki są zawijane przez wrap-dnu, a wszystkie prace znajdują się w IIS Express lub aplikacji hostowanej samodzielnie. Jednak na IIS 8 pokazuje błądASP.Net 5 IIS: Nie można rozwiązać następujących zależności.

udało się rozwiązać następujące zależności dla docelowej ramach 'DNX, Version = V4.5.1': lista moich projektów

Obecne ramy docelowej Runtime: „DNX, version = V4.5.1 (dnx451)” wersja: 1.0.0-beta7-15532 Typ: CLR Architektura: x64 Nazwa OS: Windows OS Version: 6.3.9600.0

Ten sam błąd, jeśli używam dnx 4.6 (właśnie obniżyłem poziom, aby sprawdzić, czy działa z 4.5.1).

Jednak libs można znaleźć w następującej lokalizacji: approot \ pakiety \ ze strukturą pakietu poprawne Nuget (DNU publikować pakowane nich)

Więc jak mogę pomóc IIS znaleźć moje bibliotekami?

Kroki do odtworzenia:

  1. Tworzenie roztwór z 2 projekty: New aplikacji ASP.Net MVC i zwykle klasa bibliotece (nie pakiet)

  2. Wrap klasa biblioteki poprzez DNU owinąć

  3. Biblioteki klas odniesienia z MVC

  4. Opublikuj aplikację internetową (jeśli publikujesz z Visual Studio do ie nie działa, użyj DNU publikować --runtime aktywne)

  5. Tworzenie witryny internetowej w IIS i skierować go do folderu wwwroot opublikowanych aplikacji internetowej

UPDATE: okazało się, że problem nie jest w samym IIS, ale w DNX. Otrzymuję ten sam błąd, jeśli publikuję stronę internetową, a następnie uruchamiam ją przez Microsoft.AspNet.Server.WebListener. Wygląda na to, że publikacja dnu nie działa poprawnie z zapakowanymi projektami.

Nie dotyczy to jednak usługi Windows. Mam aplikację konsolową (pakiet), która odwołuje się do tych samych bibliotek, publikuję ją za pomocą --no-source, a następnie instaluję ją jako usługę Windows przez sc.exe i wszystko działa zgodnie z oczekiwaniami.

+0

Czy masz kopię biblioteki DLL dla zestawu 'DNX' w wersji 4.5.1? – Luke

+0

Co masz na myśli? Mam wszystkie pliki DLL zbudowane dla DNX 4.5.1 i mogę tworzyć dla dowolnej wersji DNX. To nie są biblioteki DLL innych firm, to tylko projekty bibliotek klas – Vitaly

Odpowiedz

3

Mój problem polegał na tym, że w project.json miałem referencje bez wersji bibliotecznej, tylko puste ciągi. Działa w Visual Studio, ale nie podczas pracy bez VS. Miałem takie referencje, ponieważ w RC nie mogłem dodać odniesienia do menu kontekstowego, więc dodałem je ręcznie i zadziałało. Więc oto krok od tego, jak założyć stronę internetową, aby uruchomić pod IIS:

1) Wrap projektach non-DNX z „DNU wrap” komenda

2) Dodaj odwołanie od projektu DNX wam nie -DNX projekt i sprawdź, czy masz poprawną wersję w projekcie.json (powinien być taki sam jak w wrap \ yourproject \ project.json). Oto przykład:

"frameworks": { 
    "dnx46": { 
     "dependencies": { 
      "MyLib": "1.0.0-*"     
     } 
} 

3) opublikować swoją stronę internetową z DNU publikować

dnu publish .\src\Web --out <outputfolder> 

4) Publikacja dzięki parametru wykonawczego. Ten czas działania jest kopiowany do folderu wyjściowego. Jednak folder wwwroot nie został utworzony tym razem, dobrze, że uruchomiliśmy już publikację w kroku 3 ;-). Można zmienić kolejność czynności 3 i 4

dnu publish .\src\Web --out <outputfolder> --runtime dnx-clr-win-x64.1.0.0-beta7

5) Idź do outputfolder\wwwroot\web.config i typu 2 dla wartości parametrów w AppSettings: DNX-wersja, DNX-CLR. Oto przykład:

<appSettings> 
    <add key="bootstrapper-version" value="1.0.0-beta7" /> 
    <add key="runtime-path" value="..\approot\runtimes" /> 
    <add key="dnx-version" value="1.0.0-beta7" /> 
    <add key="dnx-clr" value="clr" /> 
    <add key="dnx-app-base" value="..\approot\src\Web" /> 
</appSettings> 

6) Tworzenie nowej strony internetowej w IIS, wybrać aplikację basen z wykonawczy .NET v4.0

7) Ustaw nową stronę internetową do outputfolder \ wwwroot folderu

8) Sprawdź, czy wszystko działa

+0

Dla użytkowników wersji beta 8 i wyżej te wskazówki mogą nie być tak pomocne. beta8 używa innego modelu wdrożenia, który opiera się na macierzystym module IIS HttpPlatformHandler, który opiera się na "Brak kodu zarządzanego". 'dnu publish' powinno zająć' --runtime dnx-clr-win64.1.0.0-beta8', ale web.config nie będzie potrzebował żadnego z kluczy wymienionych w tym poście. – stephen

Powiązane problemy