【问题标题】:ASP.NET MVC folder structure and NuGetASP.NET MVC 文件夹结构和 NuGet
【发布时间】:2011-09-21 00:13:54
【问题描述】:

我想要一个自定义目录结构用于我的 MVC 项目中的内容,例如:

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

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

【问题讨论】:

  • 我认为这是 Nuget 的一大疏忽。 ASP.NET MVC 有很多值得喜爱的地方,但我从不喜欢 Content 和 Scripts 文件夹。我曾经将这些更改为更标准的 css、images 和 js 文件夹,但现在我使用 Nuget,我觉得我必须坚持使用 Contents 和 Scripts。
  • 结构很尴尬,原因有很多。我最喜欢你的结构,但即使我放弃并使用 Scripts,我也需要一个子文件夹来存放所有 my 代码,以保持其干净和分离。图书馆应该是子文件夹,而不是我的东西。

标签: asp.net-mvc-3 nuget


【解决方案1】:

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

【讨论】:

  • 我认为工作项与 /packages 文件夹所在的位置有关,而不是与项目中的内容文件安装到的位置有关。无论如何,NuGet 目前不支持这一点是正确的。内容文件是相对于项目的根目录安装的。我同意为常见文件类型定义路径会很好。也许您应该在 CodePlex 上添加一个工作项。
  • 您是否知道现在仍然如此?你很久以前就回答了这个问题,所以我想知道是否有什么东西可以实现这样的功能。
【解决方案2】:

对此的回答是“否”,因为“内容”文件夹是 Nuget 的约定文件夹之一。但是,如果您将Content 文件夹重命名为public,然后让Nuget 打包您的public/js 文件夹,那么当您将包放入其中时,会将文件解压缩到public/js 文件夹。

自从我开始使用 Nuget 后,我​​改用 public 代替 Content 来处理我的公共内容,而是使用 Content 来处理我想要引入的文件,例如源文件 (see here one usage of Content)。

【讨论】:

    【解决方案3】:

    一种解决方法是使用Nuget Package Explorer 并将所需的包下载到其中。然后,您可以使用 Package Explorer 编辑包中的文件夹以适合您的口味并将其保存到您自己的 Nuget 存储库中。这可以是一个文件系统文件夹,也可以在这里更复杂:Hosting Your Own NuGet Feeds

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

    【讨论】:

      【解决方案4】:

      如何 jQuery 的安装方式由包生产者决定,在您的情况下是 jQuery 团队。 jQuery 包的安装位置取决于您。

      但是where只能根据安装包的location来调整($(SolutionDir)\packages文件夹是默认的),target项目 您将其安装到的位置。从那时起,包生产者接管并决定每个包内容的最终位置。

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

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

      这意味着您将使用您的 自己的 包和特定版本的 jQuery。您只需要注意遵守原始包的许可政策,不要破坏原始包中的任何特定安装步骤或要求,如果您手动开始更改包结构,这很容易做到。

      【讨论】:

        猜你喜欢
        • 2011-11-09
        • 2014-06-30
        • 2023-03-10
        • 1970-01-01
        • 2016-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多