如何包含从Nuget安装的JavaScript包?

如何包含从Nuget安装的JavaScript包?,javascript,visual-studio,nuget,Javascript,Visual Studio,Nuget,可能是个愚蠢的问题。我使用包管理器安装了Chart.js。它位于解决方案资源管理器中 但是实际的JS文件在哪里,或者如何获取它们?当我安装它时,Git没有检测到任何更改,所以我不确定是否发生了任何事情。Chart.js 2.5.0在其NuGet包中包含一个Content\Scripts目录,其中包含Chart.js和Chart.min.js。根据您使用的项目类型,这些文件可以直接添加到项目中,也可以不直接添加到项目中 如果您使用的.NET Framework项目具有packages.confi

可能是个愚蠢的问题。我使用包管理器安装了Chart.js。它位于解决方案资源管理器中


但是实际的JS文件在哪里,或者如何获取它们?当我安装它时,Git没有检测到任何更改,所以我不确定是否发生了任何事情。

Chart.js 2.5.0在其NuGet包中包含一个Content\Scripts目录,其中包含Chart.js和Chart.min.js。根据您使用的项目类型,这些文件可以直接添加到项目中,也可以不直接添加到项目中

如果您使用的.NET Framework项目具有packages.config文件,则JavaScript文件将添加到项目的脚本文件夹中

如果您使用的是project.json文件,或者您的项目使用PackageReferences,则不会添加任何内容,因为此类项目只支持NuGet包内contentFiles目录中的文件。您的项目看起来像.NET核心项目,将使用PackageReference。如果需要获取javascript文件,Chart.js NuGet包本身将位于
%UserProfile%\.NuGet\packages
目录中


Tseng的回答建议切换到使用Bower或Node Package Manager来添加JavaScript文件,这似乎是最好的解决方案,而不是使用NuGet,因为NuGet不支持将源文件添加到项目中以获得更新的项目文件格式。

不鼓励使用NuGet for css/JavaScript库。对于ASP.NET核心,您应该分别使用java脚本/节点包管理器、
bower
npm

你可以用任何一个。Bower更关注浏览器库和css,而NPM更关注服务器端的东西(使用node.js)。但是node.js也包含bower拥有的大部分(如果不是全部的话)包,所以这是首选的问题# 为此,您需要选择MVC项目并向项目根目录添加一个新文件。在模板管理器(
添加->新建文件…
)中,搜索“Bower配置文件”或“npm配置文件”

然后编辑文件并添加依赖项,即

package.json(npm)

保存后,文件将下载到名为“node_modules”的目录中。仅此一项是不够的,因为需要将所需文件复制到wwwroot文件夹中,在应用程序运行时可以在该文件夹中访问这些文件

为此,您需要使用bundler将文件捆绑在一起(应该在默认的ASP.NET核心项目模板中),或者使用任务运行程序(如Gulp或Grunt)在生成/发布时运行任务,这对您来说非常有用。请参阅

更新
Bower现在已经有一年多了。

Git没有检测到任何变化
可能被
忽略。gitignore
。我不确定您使用的是什么包管理器,但通常它会配置它,这样依赖项就不会出现在您的提交中。这根本不是一个愚蠢的问题。我添加了jqwidgets,它只是一个NuGet包您是对的,它在
%UserProfile%\.nuget\packages
中。那么我应该如何在代码中引用它呢?您可能必须复制文件并将其直接添加到您的项目中,而不是使用nuget。我不同意这个答案。对非程序集使用nuget是不礼貌的对于JavaScript/css,您应该使用JavaScript/node包管理器:npm或bower,而不是nuget和手动复制内容over@Tseng-您的解决方案更好。我想真正的解决方案是不要对JavaScript文件使用NuGet,特别是如果您使用的是不支持旧格式的较新项目格式er NuGet软件包使用内容目录。截图中的项目使用Bower,因此可能添加Chart.js会有正确的解决方案。这里的答案只说明了为什么Chart.js NuGet软件包不起作用。使用npm和Bower很好,如果可以的话,但不是每个人都移植了他们的东西。因此,尽管我衷心推荐如果不使用NuGet,这仍然是正确的答案。”不鼓励在css/javascript库中使用NuGet。“-你有没有可能找到这份声明的来源?只是想了解更多细节。我可以想到一些场景,在这些场景中,将客户机和服务器部件分布在一起是有意义的,并且可能会超过让bower/npm管理客户端依赖关系的好处。在某些地方,Bower被“推荐”给npm或NuGet。然而,我找不到关于各自行业的讨论-offs@Max:目前手头没有源代码,但在过去,JavaScript/css文件等将在发布
安装包时解包。在ASP.NET核心工作流中,这种情况不再发生(至少在1.0/1.1版本中是这样)。另外,NuGet内部不运行任何Powershell脚本,这在以前的一些NuGet包中发生过。一个原因可能是powershell在Linux和MacOS上还不可用。每个包都有自己的文件夹结构,可以在其中展开这些文件,这些文件通常会被提交。默认情况下,node_modules/bower_modules会被排除在外。github是由模板创建的,通常流是不同的(即通过使用“bundler”将文件复制到
wwwroot/lib
)(非角度模板)或者在较新的ASP.NET Core模板中,使用webpack为开发/发布打包所有内容。最后但并非最不重要的一点是,nuget软件包通常更新缓慢,考虑到如今css/js库的使用已转移到npm/bower。至少这对ASP.NET Core开发是有效的。@Max这种情况肯定不再存在。
而bower是主要的tained的维护人员建议使用不同的解决方案。Library Manager(简称LibMan)是Visual Studio新的客户端静态内容管理系统(Visual Studio 15.8或更高版本)。有关详细信息
{
    "dependencies:" {
        "chart.js": "2.5.0"
    }
}