2016-07-25 12 views
13

Mam pełną aplikację ASP.NET Core 1.0 działającą z wykorzystaniem odniesień net461. Teraz próbuję dodać kolejne ramy - netcoreapp1.0. W tym celu, I zostały zaktualizowane moje project.json tak:Rozwiązywanie problemów "Microsoft.NETCore.App 1.0.0 nie obsługuje architektury .NETFramework, Version = v4.6.1"

{ 
    "userSecretsId":"", 
    "version":"2.4.0-*", 
    "buildOptions":{ 
     "emitEntryPoint":true, 
     "preserveCompilationContext":true 
    }, 
    "dependencies":{ 
     "Microsoft.ApplicationInsights.AspNetCore":"1.0.0", 
     "Microsoft.AspNetCore.Authentication.Cookies":"1.0.0", 
     "Microsoft.AspNetCore.Diagnostics":"1.0.0", 
     "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore":"1.0.0", 
     "Microsoft.AspNetCore.Identity":"1.0.0", 
     "Microsoft.AspNetCore.Identity.EntityFrameworkCore":"1.0.0", 
     "Microsoft.AspNetCore.Mvc":"1.0.0", 
     "Microsoft.AspNetCore.Mvc.TagHelpers":"1.0.0", 
     "Microsoft.AspNetCore.Server.IISIntegration":"1.0.0", 
     "Microsoft.AspNetCore.Server.Kestrel":"1.0.0", 
     "Microsoft.AspNetCore.StaticFiles":"1.0.0", 
     "Microsoft.EntityFrameworkCore":"1.0.0", 
     "Microsoft.EntityFrameworkCore.SqlServer":"1.0.0", 
     "Microsoft.Extensions.Configuration.CommandLine":"1.0.0", 
     "Microsoft.Extensions.Configuration.FileExtensions":"1.0.0", 
     "Microsoft.Extensions.Configuration.Json":"1.0.0", 
     "Microsoft.Extensions.Configuration.UserSecrets":"1.0.0", 
     "Microsoft.Extensions.Logging":"1.0.0", 
     "Microsoft.Extensions.Logging.Console":"1.0.0", 
     "Microsoft.Extensions.Logging.Debug":"1.0.0", 
     "Microsoft.VisualStudio.Web.BrowserLink.Loader":"14.0.0", 
     "Microsoft.VisualStudio.Web.CodeGenerators.Mvc":"1.0.0-preview2-final" 
    }, 
    "tools":{ 
     "BundlerMinifier.Core":"2.0.238", 
     "Microsoft.AspNetCore.Razor.Tools":"1.0.0-preview2-final", 
     "Microsoft.AspNetCore.Server.IISIntegration.Tools":"1.0.0-preview2-final", 
     "Microsoft.Extensions.SecretManager.Tools":"1.0.0-preview2-final" 
    }, 
    "commands":{ 
     "ef":"EntityFramework.Commands", 
     "web":"Microsoft.AspNetCore.Server.Kestrel" 
    }, 
    "frameworks":{ 
     "net461":{ 

     }, 
     "netcoreapp1.0":{ 
     "imports":[ 
      "dotnet5.6", 
      "portable-net45+win8" 
     ] 
     } 
    }, 
    "runtimes":{ 
     "win10-x64":{ 

     }, 
     "win81-x64":{ 

     }, 
     "win8-x64":{ 

     }, 
     "win7-x64":{ 

     } 
    }, 
    "publishOptions":{ 
     "exclude":[ 
     "**.user", 
     "**.vspscc", 
     "wwwroot", 
     "node_modules" 
     ] 
    }, 
    "scripts":{ 
     "prepublish":[ 
     "npm install", 
     "bower install", 
     "gulp clean", 
     "gulp min" 
     ] 
    } 
} 

Po zmodyfikowaniu project.json, mam ten błąd:

Failed to make the following project runnable: MVC6_Full_Version (.NETCoreApp,Version=v1.0) reason: Expected coreclr library not found in package graph. Please try running dotnet restore again.

Aby rozwiązać ten problem, wpadłem dotnet restore polecenie, ale bez powodzenia.

Następnie dodałem ten blok:

"Microsoft.NETCore.App": { 
    "version": "1.0.0", 
    "type": "platform" 
}, 

Po dodaniu tego bloku, mam inny błąd:

Code: NU1002 Description: The dependency Microsoft.NETCore.App 1.0.0 does not support framework .NETFramework,Version=v4.6.1.

Zasadniczo chcę dodać odniesienie zarówno w mojej aplikacji .NET - Framework 4.6.1 i ASP.NET Core 1.0.

Jak rozwiązać ten błąd?

+0

Możesz rzucić okiem na moją odpowiedź, mam nadzieję, że to on lp. http://stackoverflow.com/a/39420980/6535426 –

Odpowiedz

12

Z pewnością możliwe jest budowanie projektów ASP.NET Core przy użyciu .NET Framework lub .NET Core. Jesteś naprawdę blisko - zaledwie kilka szczypie potrzebne:

  • Usuń sekcję runtimes, chyba że masz zamiar zrobić natywną kompilację (nieco nietypowy)
  • Place odniesienie do Microsoft.NETCore.App w dependencies sekcji wewnątrz sekcja netcoreapp1.0. Przetestowałem następujące zmiany i przywraca i kompiluje bez błędów:

project.json

... 

    "frameworks": { 
     "net461": { 

     }, 
     "netcoreapp1.0": { 
     "dependencies": { 
      "Microsoft.NETCore.App": { 
       "type": "platform", 
       "version": "1.0.0" 
      } 
     }, 
     "imports": [ 
      "dotnet5.6", 
      "portable-net45+win8" 
     ] 
     } 
    } 

Zależność Microsoft.NETCore.App jest wymagany tylko dla .NET Core i dodanie go tutaj uczyni pewien, że jest dostępny podczas budowania dla tej struktury.

Również sekcja commands została uznana za przestarzałą i można ją usunąć.

+1

Dzięki Nate :) Że pracował dla mnie. – Sachin411

1

W bibliotece .net 4.6.1 odwołałem się do biblioteki klas rdzeniowych .net, zmieniając poniższe.

Przed I był już ten błąd, gdy próbuje odwoływać się od rdzenia .net .net 4.6.1 enter image description here

Fix:

Original

{ 
    "dependencies": { 
    "Microsoft.NETCore.App": { 
     "version": "1.0.0", 
     "type": "platform" 
    }, 
    "Interop.SHDocVw.dll": "1.1.0", 
    "Microsoft.mshtml.dll": "7.0.3300.1" 
    }, 

    "frameworks": { 
    //"net461": {}, 
    "netcoreapp1.0": { 
     "imports": [ 
     "dotnet5.6", 
     "portable-net45+win8", 
     "net461" 
     ] 
    } 
    }, 

    "scripts": { 
    "prepublish": [ "bower install", "dotnet bundle" ] 
    } 
    } 

Poprawione

{ 
    "dependencies": { 
     "Interop.SHDocVw.dll": "1.1.0", 
     "Microsoft.mshtml.dll": "7.0.3300.1" 
    }, 

    "frameworks": { 
     "net461": { 
     }, 
     "netcoreapp1.0": { 
     "dependencies": { 
      "Microsoft.NETCore.App": { 
      "type": "platform", 
      "version": "1.0.0" 
      } 
     }, 
     "imports": [ 
      "dotnet5.6", 
      "portable-net45+win8", 
      "net461" 
     ] 
     } 
    }, 

    "scripts": { 
     "prepublish": [ "bower install", "dotnet bundle" ] 
    } 
} 
+0

Ten projekt.config whoopla to bałagan. To, co rozumieją przez .NetCore, nadal musisz wszystko poprawnie opisać, a nie jako zespół, ale pakiet. Jeśli rozszerzysz References -> .NetCoreApp, Version = v1.0 w głównej aplikacji .net, a następnie rozwiń Microsoft.NetCore.App (1.0.0) .... spójrz na wszystkie te zależności. Więc to naprawdę nie jest pojedynczy zespół "Core". Jest to rdzeń owinięty wokół starszych assebmlów. Naprawdę nie widzę zalet tego, czyni to twoją aplikację lżejszą ... ale wciąż nie jest prawdziwym Rdzeniem. – chdev77

Powiązane problemy