2015-05-07 30 views
1

我正在將腳趾陷入ASP.NET 5(vNext)。爲此,我下載了Visual Studio 2015 RC。我創建了一個新的ASP.NET Web應用程序。然後,在下一個對話框中,我選擇了「空白」。從那裏我添加了一個基本的控制器和一個基本的視圖。ASP.NET 5中的公共文件

我想添加涼亭和參考Zurb基金會。不過,我不知道該怎麼做。我添加了一個bower.json和.bowerrc文件。傳統上,我會將我的bower軟件包安裝在名爲「庫」的目錄中。我配置它,如下所示:

.bowerrc

{ 
    "directory" : "/public/libraries" 
} 

然後,在我的觀點,我有一個看起來像這樣的代碼:

<link rel="stylesheet" src="~/public/libraries/foundation/foundation.min.css" /> 

我可以看到,當我運行涼亭,我實際上正在下載這些庫,它們被放置在/ public/libraries中。但是,當我部署它時,似乎存在一個問題。它看起來部署正在從wwwroot運行。但是,我不知道該怎麼辦通過涼亭加載

  • 我的資源(即圖像,CSS,JavaScript的,字體等)約

    • 客戶端軟件包,我需要我的應用程序使用。

    我需要做什麼來訪問靜態文件a)在開發過程中似乎使用典型的文件結構和b)在部署過程中,東西似乎從wwwroot運行?

  • +0

    在Startup.cs中添加靜態文件中間件 –

    +0

    我已經有了。但是,它仍然無法找到文件。公共目錄是否需要以某種方式複製到wwwroot目錄? –

    +0

    你的咕嚕聲或大嘴巴腳本應該這樣做 –

    回答

    2

    在開發和生產過程中,如果您有定義,您需要在webroot之下放置東西。你可以通過吞嚥或咕嚕任務來做到這一點。示例請參見here

    假設你有以下結構:

     
    └───wwwroot 
        ├───js 
        │ └───foo.js 
        │ └───bar.js 
    

    您將能夠接觸到他們:

    <link rel="stylesheet" src="~/js/bar.js" /> 
    <link rel="stylesheet" src="~/js/foo.js" /> 
    
    +0

    我還是有點困惑。這是否意味着我需要一個將文件從'/ public/packages *'複製到'/ wwwroot/packages/*'的咕task任務。如果是這樣,Azure網站在部署過程中是否運行gulpfile.js?目前,我的網站在本地機器上運行。但是,當我部署爲Azure網站時,它就像無法找到這些文件。 –

    +0

    你究竟是如何發佈。作爲發佈的一部分,項目將被構建,並且應該包括解決所有依賴關係和運行任務運行者。作爲發佈過程的一部分,客戶端軟件包應已被複制到wwwroot。要查看一個工作示例,請使用ASP.NET 5模板創建一個新項目並將其發佈到本地文件系統。您應該在wwwroot下看到一個/ lib子文件夾,其中包含所有客戶端依賴關係。 –

    0

    你不應該讓你的意見參考的位置涼亭的依賴關係,而應該引用wwwroot中的相對路徑。

    要了解這一切如何,我建議使用VS 2015 RC中的ASP.NET 5 Web Page模板創建一個新項目。

    package.json列出了您的工具依賴項(由npm解析)。這裏包括了默認項目的注意事項。 Gulp是默認的任務運行者,但你可以使用任何你喜歡的任務運行者。按照慣例的涼亭依賴性在bower.config中定義。

    按照慣例,涼亭依賴關係的位置是bower_components,而不是 項目根目錄。

    如果你看看gulpfile.js,你會發現它將依賴關係從bower_compontents複製到/ lib項目webroot(默認爲/ wwwroot)。

    在視圖_Layout.cshtml中,您將看到對庫的引用是〜/ lib not/bower_components。

    @inject IOptions<AppSettings> AppSettings 
    <!DOCTYPE html> 
    <html> 
        <head> 
         <meta charset="utf-8" /> 
         <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 
         <title>@ViewBag.Title - @AppSettings.Options.SiteTitle</title> 
    
         <environment names="Development"> 
          <link rel="stylesheet" href="~/lib/bootstrap/css/bootstrap.css" /> 
          <link rel="stylesheet" href="~/lib/bootstrap-touch-carousel/css/bootstrap-touch-carousel.css" /> 
          <link rel="stylesheet" href="~/css/site.css" /> 
         </environment> 
         <environment names="Staging,Production"> 
          <link rel="stylesheet" href="//ajax.aspnetcdn.com/ajax/bootstrap/3.0.0/css/bootstrap.min.css" 
            asp-fallback-href="~/lib/bootstrap/css/bootstrap.min.css" 
            asp-fallback-test-class="hidden" asp-fallback-test-property="visibility" asp-fallback-test-value="hidden" /> 
          <link rel="stylesheet" href="//ajax.aspnetcdn.com/ajax/bootstrap-touch-carousel/0.8.0/css/bootstrap-touch-carousel.css" 
            asp-fallback-href="~/lib/bootstrap-touch-carousel/css/bootstrap-touch-carousel.css" 
            asp-fallback-test-class="carousel-caption" asp-fallback-test-property="display" asp-fallback-test-value="none" /> 
          <link rel="stylesheet" href="~/css/site.css" /> 
         </environment> 
        </head> 
    
    在總結

    所以:

    1. 定義在bower.config客戶端依賴(或者使用一些其他 包mananger)
    2. 一飲而盡使用腳本來管理任務(複製,縮小文件等) 。
    3. 只能在視圖中引用webroot中的位置(使用〜相對路徑)。
    4. 當您構建/發佈所有依賴關係時,應在將 部署到服務器之前解決。