ASP.NET MVC3项目并不总是发布所有视图/内容

chu*_*nce 16 asp.net-mvc-3

这很疯狂,但我似乎无法在发布网站时发布我的所有观看/内容/脚本.我相信,当我的项目没有直接引用视图或内容,但我的项目中的另一个程序集使用它时,这似乎发生了.所以我可能会:

  • 引用ExternalAssembly.dll(它被发布)
  • 我需要在我的主项目中,在我的views文件夹下使用ExternalLogin.cshtml
  • ExternalLogin.cshtml未发布

现在我有一个脚本复制Views文件夹中的所有内容并将其转储到我想要部署的位置,但VS应该为我做这个.我究竟做错了什么?

Ada*_*SFT 15

当你点击一个文件时,这些文件对属性的构建操作是什么?内容....还是?设置为内容.


Pau*_*yng 11

那么您的视图文件位于当前项目之外的另一个项目或文件夹中?通常,文件必须存在于网站项目中,位于其视图文件夹中,而不是外部,并且构建操作应设置为Content而不是复制到输出文件夹.但是有一些解决方法:

  • 将它们复制到您的站点视图文件夹中,并确保它们是标记内容(如另一个答案中所述).有一点需要注意的是,你可以在visual studio中将它们添加为"链接文件",它实际上允许它们存在于层次结构中的两个位置,而不必存在于磁盘上的两个位置:http://support.microsoft.com/KB/306234
  • 如果您可以控制外部库,可以将它们作为嵌入式资源进行编译,或者使用Razor Generator或类似的东西,并使用自定义视图引擎返回它们:如何使ASP.NET MVC 3使用视图(aspx,ascx)来自我网站上的外部程序集的文件?
  • 使用复制任务手动将副本放入.csproj构建XML:http://msdn.microsoft.com/en-us/library/3e54c37h.aspx (请注意,这将使它在visual studio中工作,基本上就是你所做的现在做,因为它将成为Visual Studio构建的一部分,如果你将它添加到AfterBuild目标或其他东西)