如果我使用NuGet Package Manager安装AngularJS Core软件包,我将在项目的根目录下获取一个文件夹名称“package”,并填充脚本,但同时将创建一个“scripts”文件夹,其中包含重复的相同的脚本。
是否有任何理由同时创建“脚本”和“包”文件夹?
为什么我单击“显示所有文件”解决方案资源管理器将继续隐藏“packages”文件夹?
答案 0 :(得分:0)
解决方案根目录中存在packages文件夹,它将所有软件包添加到解决方案内的所有项目中,包括任何配置或清单文件。
如果您添加了一次包,它将被添加到packages文件夹中,并且根据此包,将在您的项目中创建一些文件夹,例如:脚本,其他一些包修改web.config或添加一些代码行一些文件,取决于包的功能。
如果您将同一个软件包添加到另一个项目,它将不会再次下载,但会从本地软件包文件夹中复制。
大多数软件包都有DLL,当你添加这样的软件包时,项目将直接从packages文件夹中引用DLL,它不会将它复制到项目文件夹本身。
但是,对于包含脚本等内容的包,必须将其复制到项目文件夹中,因为它将与项目一起发布,这主要发生在Web项目本身。
答案 1 :(得分:0)
实际上包文件夹不在项目根文件夹中,它位于解决方案文件夹中。它不会被添加到解决方案资源管理器窗口,因为它用于管理所有项目的整个解决方案包。
(1)“Packages”文件夹中的Scripts文件夹(如屏幕截图1)属于包,它是下载包的一部分。
(2)解决方案资源管理器中的脚本文件夹(如屏幕截图2)作为内容文件夹添加到特定项目中。我的理解是只有特定的包具有这个功能,例如,如果你想在其他机器上安装应用程序,它将被添加到安装文件中。但我们无法在此项目的“Package”文件夹中安装所有软件包。
实际上Haitham Shaddad之前提供了正确的定义,但简而言之,我的理解是这个脚本内容引用与程序集引用不同,它与包成员如何创建包有关。当然,如果你有NuGet Package Explorer工具,你会发现这个包的结构。
答案 2 :(得分:0)
对于大多数nuget包,还原时只会创建“packages”文件夹。您没有从解决方案资源管理器中看到它的原因是它只是一个用于放置nuget包文件的文件夹,您可以根据需要更改文件夹的路径,它不是项目/解决方案的一部分。如果您使用版本控制,也不建议检查源包中的“packages”文件夹。
对于“scripts”文件夹,它由nuget包作者控制,文件夹的名称可以是anystring。如果作者希望将文件夹复制并添加到项目中,则在创建nuget包时,它们会将其放在“content”文件夹中。