0

我有一個由Yeoman生成的'Hello World'Kestrel服務器(如described here)。某些文件在通過Visual Studio運行時未提供代碼

yo aspnet 

當我運行通過命令行的一切現場工作得好:如果它通過Visual Studio代碼運行雖然bootstrap.cssjquery.jsbootstrap.js不加載(404)

dotnet run 

看着F12工具,他們實際上來自不同的地點。當通過dotnet run運行時,它們來自https://ajax.aspnetcdn.com/...,但是當通過Visual Studio代碼運行時,瀏覽器正在本地文件夾~/lib/...中查找它們。

a。爲什麼這些文件的來源有所不同,取決於我如何運行網站? b。我該如何解決?

感謝

回答

1

當您從命令行中運行它,它運行在生產模式(無ASPNETCORE_ENVIRONMENT變量集。當你從Visual Studio中運行它,它設置ASPNETCORE_ENVIRONMENTDevelopment

內,您的剃鬚刀文件,你有一個<environments>部分,它控制在哪個生產模式下提供哪些文件,根據你的環境/操作系統,你需要設置不同的變量,例如在Linux中你需要運行ASPNETCORE_ENVIRONMENT=Development dotnet run

至於您在開發模式下運行時得到404的原因,您可能需要將wwwroot文件夾複製到您的輸出目錄,並在project.json中輸入此條目。

"buildOptions": { 
    "emitEntryPoint": true, 
    "preserveCompilationContext": true, 
    "copyToOutput": 
    [ 
    "wwwroot", 
    "Views", 
    "appsettings.json", 
    "web.config" 
    ] 
}, 
"publishOptions": { 
    "include": [ 
    "wwwroot", 
    "Views", 
    "appsettings.json", 
    "web.config" 
    ] 
}, 

雖然平時就應該有必要添加wwwrootcopyToOutput

+0

就是這樣,謝謝! – BanksySan

+0

實際上(相當愚蠢的鍋爐板)沒有'lib'目錄。 – BanksySan

+0

@ lib文件夾通常由bower(恢復鮑爾依賴關係時)或npm + gulp任務(當您使用npm時)創建。 bower默認恢復其在wwwroot/lib中的依賴關係,而npm在proejctroot中執行它/ npm_modules – Tseng

相關問題