2017-04-19 152 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