为什么Nuget JavaScript包会复制到Scripts文件夹

5
当我从Nuget安装jQuery到我的VS C#项目中时,jquery.js会出现在我的packages文件夹中。这样很好,因为我不想将这个文件检入我的源代码控制中,它不是我的代码,我永远不会改变它 - 在这种情况下,它就相当于通过不同包获得的DLL。目前还不错...
那么,为什么包安装程序还要将文件复制到项目Scripts文件夹中呢?当然,最好是将其添加到项目作为指向packages文件夹中文件的链接,就像Nuget包DLL一样被项目引用。

1
这是为网络项目设计的,当您托管一个网络项目时,文件需要放置在可检索的位置上... - Callum Linington
如果您不想将其添加到源代码控制中,请将其添加到忽略列表中。 - Callum Linington
1
啊,但是这样包恢复就不能正常工作了 - 如果文件存在于包文件夹中,那么Nuget认为它不需要恢复,即使它在脚本文件夹中缺失。 - Jon G
脚本文件夹是您的项目,它是应用程序从其中加载脚本的地方。软件包文件夹是软件包的“源”-即本地缓存,因此未来不需要下载。您的应用程序不会从软件包文件夹中读取文件(或者至少不应该这样)。如果您使用dll做同样的事情,它会将dll放在软件包和bin文件夹中。软件包不是项目的一部分,而是将内容提供给项目的手段。 - freedomn-m
2
是的,这正是我的观点 - 在部署之前必须构建项目。使用引用 Nuget DLL 的方式构建项目将导致该 DLL 从 packages 复制到 bin 目录中(它从来不是源代码仓库的一部分,而只是 .csproj 文件中的引用)。我更希望引用的 Nuget Js 文件也能以同样的方式处理,即构建过程会将它们从 packages 中提取出来,并放在需要运行的位置。在两种情况下,DLL/JS文件都不是项目源代码的一部分。 - Jon G
1个回答

3

团队已决定停止支持nuget包中的内容文件。他们建议使用其他包管理器来管理客户端库,如npm、bower等。在Visual Studio 2015中,已经内置了对它们的支持。

其中一个原因是每当npm仓库上的某个客户端包更新时,微软团队中的一些人都必须获取它、重新打包成nuget并发布。

快去看看吧!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接