2017-04-19 99 views
9

可能是一個愚蠢的問題。我使用包管理器安裝Chart.js。它在解決方案資源管理器。如何包含我從Nuget安裝的JavaScript包?

enter image description here

但是哪裏有實際的JS文件或如何獲取它們呢?當我安裝它時,Git檢測不到任何更改,所以我不確定是否發生了任何事情。

+1

'Git檢測到沒有變化'可能被'.gitignore'忽略。我不確定你使用的是哪個軟件包管理器,但通常它會對它進行配置,使得依賴不會在你的提交中。 –

+0

不是一個愚蠢的問題。我添加了** jqwidgets **,它只能作爲NuGet包使用,並且供應商似乎沒有意識到這是一個問題。 – Auspex

回答

6

Chart.js 2.5.0在其NuGet包內包含一個Content \ Scripts目錄,其中包含一個Chart.js和Chart.min.js。根據您使用的項目類型,這些文件可能會或可能不會直接添加到您的項目中。

如果您使用的是帶有packages.config文件的.NET Framework項目,那麼JavaScript文件將被添加到您的項目的Scripts文件夾中。

如果您使用的是project.json文件,或者您的項目使用PackageReferences,那麼將不會添加任何內容,因爲此類項目僅支持位於NuGet包內的contentFiles目錄中的文件。你的項目看起來像一個.NET Core項目,它將使用PackageReferences。如果您需要獲取JavaScript文件,Chart.js NuGet包本身將位於%UserProfile%\.nuget\packages目錄中。

Tseng的建議轉換爲使用Bower或Node Package Manager添加JavaScript文件的答案在這裏看起來是最好的解決方案,而不是使用NuGet,它沒有很好的支持將源文件添加到項目中用於更新的項目文件格式。

+0

你說得對,它在'%UserProfile%\。nuget \ packages'中。那麼我該如何在代碼中引用它? – user7127000

+1

您可能需要複製這些文件並將它們直接添加到您的項目中,而不是使用NuGet。 –

+0

我不同意這個答案。目前不鼓勵使用NuGet進行非組裝。對於JavaScript/css,您應該使用javascript/node程序包管理器:npm或bower代替nuget並手動複製 – Tseng

3

不鼓勵使用NuGet for css/javascript庫。對於ASP.NET Core,應該分別使用java腳本/節點程序包管理器bowernpm

您可以使用任一個。 Bower更側重於瀏覽器庫和css,而NPM則更多地用於服務器端的東西(使用node.js)。但是node.js也包含大部分(如果不是全部的話)包,所以它是首選的問題。

爲此,您需要選擇您的MVC項目並將新文件添加到項目根目錄。在模板管理器(Add->New File...)中,搜索「Bower配置文件」或「npm配置文件」。

然後編輯該文件並添加你的依賴,即

的package.json(NPM)

{ 
    "dependencies:" { 
     "chart.js": "2.5.0" 
    } 
} 

一旦保存,該文件將在名爲「node_modules`。僅此目錄下載因爲所需的文件需要複製到wwwroot文件夾,在應用程序運行時可以訪問它們。

爲此,您需要使用捆綁器將文件捆綁在一起(應該默認爲ASP.NET Core項目模板e)或者使用Gulp或Grunt等任務運行者在構建/發佈上運行任務,這會爲您做到這一點。請參閱ASP.NET Core Docs on Gulp examples

+0

「不鼓勵使用NuGet for css/javascript庫。」 - 你有沒有機會得到這個聲明的來源? 只是想更詳細地瞭解。我可以想到一些將客戶端和服務器組件分配在一起的場景,這些場景會有意義並且可能超過使用bower/npm管理客戶端依賴項的好處。 在https://docs.microsoft.com/zh-cn/aspnet/core/client-side上,Bower在幾個地方通過npm或NuGet「推薦」。但是,我找不到相應的權衡討論 – Max

+1

@Max:現在手邊沒有源代碼,但過去JavaScript/css文件等會在發佈Install- Package'。在ASP.NET Core工作流程中,這種情況不再發生(至少在1.0/1.1版本的情況下)。此外,NuGet不會在內部運行任何電源shell腳本,這在之前的一些nuget軟件包中發生過。一個原因可能是Linux和MacOS上尚未提供電源外殼。每個軟件包都有自己的文件夾結構展開這些文件,這些文件通常最終被提交。 – Tseng

+1

node_modules/bower_modules默認排除在.github中,這些模板現在由模板創建,通常流程是不同的(即通過使用「bundler」(非角模板)或在較新的版本中將文件複製到'wwwroot/lib'文件ASP.NET Core模板使用webpack打包dev/release的所有內容最後但並非最不重要的是,考慮到css/js庫的今天的用法轉移到了npm/bower,nuget軟件包通常會更新得更慢。 ASP.NET ** Core **開發。 – Tseng