ASP.NET MVC文件夹结构和NuGet

时间:2011-06-23 07:48:49

标签: asp.net-mvc-3 nuget

我想在我的MVC项目中为我的内容定制目录结构,例如:

\Content
    --\js
    --\css
    --\img

是否可以告诉NuGet包在Content \ js文件夹中安装脚本?例如jQuery包,以便在Content \ js文件夹中安装jquery-1.6.js文件?

4 个答案:

答案 0 :(得分:13)

解决方法是使用Nuget Package Explorer并将所需的软件包下载到该软件包中。然后,您可以使用 Package Explorer 编辑包中的文件夹以满足您的需求,并将其保存到您自己的Nuget存储库中。这可以是文件系统文件夹,也可以在这里变得更复杂:Hosting Your Own NuGet Feeds

当然,这意味着您必须使您的私有存储库中的软件包保持最新。显然,如果你有很多包来处理这可能会成为一个问题。然而,Nuget的未来版本很可能会处理本地供稿问题,因为对于那些“限制开发人员可以使用哪些第三方库”的公司来说,这是一个问题,如托管您自己的NuGet供稿中所述上面的参考。

答案 1 :(得分:6)

我相信答案就是“不”。但是,有一些引用可以将NuGet安装的根文件夹设置为:http://nuget.codeplex.com/workitem/215(参见注释)

答案 2 :(得分:3)

如何安装jQuery由包生产者决定,它是你的案例中的jQuery团队。 安装jQuery包的地方取决于你。

但是,其中只能根据已安装软件包的位置进行调整($(SolutionDir)\packages文件夹是默认值),而 >目标项目,将其安装到其中。从那时起,包生产者接管并决定每个包装内容的最终位置。

ASP.NET MVC有一些很好的约定,例如Content文件夹,Scripts文件夹,App_Start文件夹(用于WebActivator)等。想想试图摆脱这些约定所涉及的风险和额外的努力。它们是否超过了收益?

现在,如果您真的想使用自己的约定,可以使用所需的内容结构创建自己的包,并将jQuery脚本放在消费项目中的所需位置。

这意味着您将使用自己的包与特定版本的jQuery。您只需要小心尊重原始软件包的许可策略,而不是破坏原始软件包中的任何特定安装步骤或要求,如果您手动开始更改软件包结构,这很容易做到。

答案 3 :(得分:0)

答案是“否”,因为“Content”文件夹是Nuget的约定文件夹之一。但是,如果您将Content文件夹重命名为public,然后让Nuget打包您的public/js文件夹,那么当您将其中的软件包放入其中时,会将文件提取到{public/js 1}}文件夹。

自从我开始使用Nuget后,我转而使用public代替Content而不是Content,而是将{{1}}用于我想要引入的文件,如源文件( see here one usage of Content)。