Asp.net mvc 3 ASP.NET MVC文件夹结构和NuGet

Asp.net mvc 3 ASP.NET MVC文件夹结构和NuGet,asp.net-mvc-3,nuget,Asp.net Mvc 3,Nuget,我希望在MVC项目中为我的内容提供自定义目录结构,例如: \Content --\js --\css --\img 可以告诉NuGet软件包在Content\js文件夹中安装脚本吗?例如jQuery包,以便将jQuery-1.6.js文件安装在Content\js文件夹中?我相信答案是“否”。但是,有一些参考可以设置根文件夹NuGet将东西安装到:(请参阅注释)答案是“否”,因为“内容”文件夹是Nuget的约定文件夹之一。但是,如果您将内容文件夹重命名为,例如,publ

我希望在MVC项目中为我的内容提供自定义目录结构,例如:

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

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

我相信答案是“否”。但是,有一些参考可以设置根文件夹NuGet将东西安装到:(请参阅注释)

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


自从我开始使用Nuget之后,我开始对我的公共内容使用
public
,而不是
content
,而是对我想要引入的文件使用
content
,比如源文件()。

一种解决方法是使用,然后将您想要的包下载到其中。然后,您可以使用PackageExplorer编辑包中的文件夹,以适合您的口味,并将其保存到您自己的Nuget存储库中。这可以是一个文件系统文件夹,也可以在此处获得更复杂的内容:


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

jQuery的安装方式由包决定producer,即您案例中的jQuery团队。 jQuery包的安装位置由您决定

但是,只能根据安装包的位置(默认为
$(SolutionDir)\packages
文件夹)和安装包的目标项目来调整where。从那时起,包装制作人接管并决定每件包装内容的最终去向

ASP.NET MVC有一些很好的约定,例如内容文件夹、脚本文件夹、应用程序启动文件夹(对于WebActivator)等。请考虑尝试摆脱这些约定所涉及的风险和额外的工作。它们是否超过了好处

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


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

我相信工作项与/packages文件夹的位置有关,不是安装到项目中的内容文件的位置。无论如何,您认为NuGet当前不支持此操作是正确的。内容文件是相对于项目的根目录安装的。我同意为常见的文件类型定义路径会很好。也许你应该在CodePlex上添加一个工作项。你知道情况是否仍然如此吗?你很久以前就回答了这个问题,所以我想知道是否有什么东西可以实现这样的功能。我认为这是Nuget中的一个大疏忽。在ASP.NET MVC中有很多值得喜爱的地方,但我从来都不喜欢内容和脚本文件夹。我曾经将这些更改为更标准的css、图像和js文件夹,但我觉得现在使用Nuget后,我必须坚持使用内容和脚本。我最喜欢你的结构,但即使我放弃并使用脚本,我也需要一个子文件夹来存放我的所有代码,以保持其干净和分离。库应该是子文件夹,而不是我的资料。可能是的重复项