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

时间:2011-11-01 23:46:56

标签: asp.net-mvc-3

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

  • 引用了ExternalAssembly.dll(它已发布)
  • 我的主项目中需要ExternalLogin.cshtml,在我的观察文件夹
  • ExternalLogin.cshtml未发布

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

2 个答案:

答案 0 :(得分:13)

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

答案 1 :(得分:11)

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

  • 将它们复制到您的站点视图文件夹中,并确保它们是标记内容(如另一个答案中所述)。有一点需要注意的是,你可以在visual studio中将它们添加为“链接文件”,这实际上允许它们存在于层次结构中的两个位置,而不必存在于磁盘上的两个位置:http://support.microsoft.com/kb/306234
  • 如果您可以控制外部库,可以将它们作为嵌入式资源进行编译,或者使用Razor Generator或类似的东西,并使用自定义视图引擎返回它们:How can I make ASP.NET MVC 3 use views (aspx, ascx) files from an external assembly in my website?
  • 使用复制任务手动将副本放入.csproj构建XML:http://msdn.microsoft.com/en-us/library/3e54c37h.aspx(请注意,这将使它在visual studio中的功能基本上与您现在正在执行的操作相同,因为它将成为Visual Studio构建,如果将其添加到AfterBuild目标或其他内容)