2016-06-28 22 views
15

Ben derlemek ve çalıştırmak için çalışıyorum basit bir .NET Core projesi (konsol uygulaması) var. dotnet build başarır ama dotnet run ne zaman aşağıdaki hatayı alıyorum:Kitaplık hostpolicy.dll bulunamadı

λ dotnet run 
Project RazorPrecompiler (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation. 
A fatal error was encountered. The library 'hostpolicy.dll' required to execute the application was not found in [path]. 

Benim project.json şöyle görünür:

{ 
    "buildOptions": { 
    "warningsAsErrors": true 
    }, 
    "dependencies": { 
    "Microsoft.AspNetCore.Razor": "1.0.0", 
    "Microsoft.NETCore.App": { 
     "type": "platform", 
     "version": "1.0.0" 
    } 
    }, 
    "description": "Precompiles Razor views.", 
    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": [ ] 
    } 
    }, 
    "version": "1.2.0" 
} 

Ne hostpolicy.dll olduğunu ve neden eksik?

+2

Bir runtimeconfig.json eksik olan Visual Studio 2017 RC3 ile özel bir DotnetCliTool çalıştırmaya çalışırken bu hatayla karşılaştım. Bir sonraki VS sürümü varsayılan olarak paketleyecektir. https://github.com/dotnet/cli/issues/5593#issuecomment-277638612 –

+0

Aynı hata, MyApp.exe dotnet'i çalıştırırsanız, sadece MyApp.exe'yi çalıştırın. "" Kütüphane 'hostpolicy.dll' gerekli "eğer dağıtım klasöründen çalıştırırsanız, ancak emitEntryPoint doğruysa) (// stackoverflow.com/a/38333053) –

cevap

10

Bu hata mesajı yararsızdır. fiili Sorun, eksik emitEntryPoint özelliktir: Bu eklendikten sonra

"buildOptions": { 
    ... 
    "emitEntryPoint": true 
    }, 

, derleyici size (Eksik static void Main() yöntemle gibi) herhangi bir diğer sorunlar hakkında bilgi vereceğiz. Projenin başarılı bir şekilde derlenmesi, dotnet run'un çalışabileceği bir çıktı ile sonuçlanacaktır.

+3

Bunu bir süre önce gönderdim: https://github.com/dotnet/cli/issues/2859 – Pawel

+0

Bu olduğundan hala rtm'de oluyor, sadece durumda olduğu halde github repo'unda not etmeye değer olabilir. –

+2

@NickAcosta - Bu tür sorunların, tooling'in önizleme2 olduğunu ve rtm'nin (hata için kilometre taşı 1.0.0-rtm olduğunu) olduğunu düşünüyorum. Sadece çalışma zamanı rtm'dir. – Pawel

6

Güncelleme dotnet çekirdek 2.0 için: appname.dll aynı yolu gerekli (her ikisi de ayıklama için ve serbest konfigürasyon) dosyası appname.runtimeconfig.json olup.

Bu içerir:

sonra
{ 
    "runtimeOptions": { 
    "tfm": "netcoreapp2.0", 
    "framework": { 
     "name": "Microsoft.NETCore.App", 
     "version": "2.0.0" 
    } 
    } 
} 

dotnet.exe exec "path/to/appname.dll" [appargs] çalışır.

+0

Bu cevap ben de dotnet core 2.0 kullanıyorum benim için kısmen ilgilendi. Çalışma alanım için garip bir şey yapıp yapmadığımı bilmiyorum, ama aynı zamanda hem “obj” hem de “bin” dizinlerinde .dll dosyası bulduğumu da fark ettim. Ben 'obj' vardı ve 'bin' olanı zaten bu '.runtimeconfig.json' dosyası vardı olduğunu fark etti. Koşmak, değişmeden çalıştı. – voltrevo

1

Azure'da ASP.NET Core 2.0 ile birlikte, hile yapan appname.deps.json oldu.