2016-10-22 17 views
11

Birçok .NET Core projesinde bir çözüm var. Ben projenin tüm Nuget güncellemelerini yaptım ve şimdi ben şu hataları olsun oluşturmaya çalıştığınızda (projelerin bazıları için - hepsi değil): yardımcı gibiydi neÇerçeve için çalışma zamanı hedefi bulamıyor .NETCoreApp = v1 bazı projeler için hedef çalışma zamanlarından biriyle uyumlu

Can not find runtime target for framework '.NETCoreApp,Version=v1.0' compatible with one of the target runtimes: 'win10-x64, win81-x64, win8-x64, win7-x64'. Possible causes: 
1. The project has not been restored or restore failed - run `dotnet restore` 
2. The project does not list one of 'win10-x64, win81-x64, win8-x64, win7-x64' in the 'runtimes' section. 
3. You may be trying to publish a library, which is not supported. Use `dotnet pack` to distribute libraries. 

burada Can not find runtime target for framework .NETCoreApp=v1 compatible with one of the target runtimes bulunan bir konu

Ben başarısız projelere aşağıdaki eklendi: sorunu çözmek gibiydi

"runtimes": { 
    "win10-x64": { } 
} 

. Ama sorum şu, bu neden sadece bazı projelerde oluyordu? Hata vermeyen projeler, project.json dosyalarında böyle bir çalışma zamanı tanımına sahip değildir.

Bu çalışma zamanı tanımı tam olarak ne anlama geliyor? linux veya mac gibi diğer os'da çalışma yeteneğimi nasıl etkiler?

+3

sen değil bir çalışan proje ve biri için bir örnek project.json verebilir misiniz? – svick

cevap

14

Bu çalışma zamanı tanımı tam olarak ne anlama geliyor?

runtimes listeleri bizim paket destekler çalıştırıcıları. Listeleme, kendi kendine yeten dağıtımlar için gereklidir. Kendi çalışma zamanını getirdiğinde bir dağıtım kendi kendine yeten.

Dağıtımımızın bağımsız olup olmadığını nasıl anlarız? Paketimizin bağlı olduğu paketleri dependencies listeleyin. Bu bağımlılıklar üç tipte gelir.

  • build paket sadece bina içindir ve dağıtım parçası olmayan
  • paket önceden yüklenmiş bir çalışma zamanı
  • default olanlar

hiçbiri bizim "Microsoft.NETCore.App" Eğer bağlıdır

  • platform bağımlılık default tipindedir, o zaman kendi kendine yeten ve kendi çalışma zamanlarımızı getirmemiz gerekecek. platform türündeyse, çerçeveye bağımlıdır.

    Bu neden sadece bazı projelerde oluyordu?

    Yalnızca kendi kendine yeten dağıtımlar olan projelerde gerçekleşir. runtimes özelliği gerektirmeyen projelerden bakarsanız, bunların sınıf kitaplıkları veya çerçeve bağımlı olduğunu görürsünüz.

    müstakil dağıtım

    "frameworks": { 
        "netcoreapp1.0": { 
        "dependencies": { 
         "Microsoft.NETCore.App": { 
          "version": "1.0.0" 
         } 
        } 
        } 
    }, 
    "runtimes": { 
        "win10-x64": {}, 
        "osx.10.10-x64": {} 
    } 
    

    çerçeve bağımlı dağıtım

    "frameworks": { 
        "netcoreapp1.0": { 
        "dependencies": { 
         "Microsoft.NETCore.App": { 
          "type": "platform", 
          "version": "1.0.0" 
         } 
        } 
        } 
    } 
    

    sınıf kitaplığı o linux ya da benzeri diğer os çalıştırmak için yeteneğimi nasıl etkiler nasıl

    "frameworks": { 
        "netstandard1.6": {} 
    } 
    

    Mac?

    Yapmıyor. Windows, Mac OS ve Linux'un tümü önceden yüklenmiş bir çalışma süresine sahip olabilir veya uygulamanın kendi çalışma zamanını getirmesini sağlayabilir.

    da

  • +1

    Ayrıntılı yanıt için teşekkürler. Bu yüzden, eğer doğru bir şekilde anladığım halde, bağımsız bir dağıtımla, DOTNETCORE'un linux'a yüklenmiş olmasına gerek yok mu? Ayrıca, bahsettiğim gibi, bu sadece NuGet paketlerini güncelledikten sonra oldu - neden aniden? performansı etkiler mi? – developer82

    +0

    "Microsoft.NETCore.App" altında "Microsoft.NETCore.App" olarak bırakılmak yerine "1.0.1" '' '' version '' sürümünü eklediğimi buldum: "1.0.1", ve "type": "runtime" tanımı olmadan derlenenden "platform". Bu tam olarak nedir ve neyin daha iyi olduğu - çalışma zamanı ile veya olmadan mı? – developer82

    +0

    @ developer82 Evet. Bağımsız bir dağıtım için, Linux'ta DOTNETCORE'un yüklü olması gerekmez. –

    İlgili konular