【问题标题】:Visual Studio 2010 "Publish" does not copy Razor view filesVisual Studio 2010“发布”不复制 Razor 视图文件
【发布时间】:2011-05-08 00:05:18
【问题描述】:

将 Visual Studio 2010 的内置发布功能与包含 Razor 视图(.cshtml 或 .vbhtml)的 Web 应用程序一起使用时,发布服务不会复制 Razor 视图文件

这发生在本地“文件系统”发布以及使用 Web 部署的远程发布上,使用 November 9 Release Candidate

是否有任何已知的解决方法?

【问题讨论】:

  • 项目项的“构建操作”属性是相关的。尝试“Content”,以便 IDE 知道它是需要部署的项目。

标签: asp.net-mvc visual-studio visual-studio-2010 razor


【解决方案1】:

您需要在属性下将构建操作设置为“内容”。

编辑:您必须对每个未被复制的文件执行此操作。

编辑 2:我四处寻找,在 msdn 上找到了一个论坛发帖,听起来你可以编辑注册表,或者创建一个 pkdef 文件。

http://social.msdn.microsoft.com/Forums/en/vsxprerelease/thread/c0212d15-96c4-455d-b7e1-d299c5ef384a

【讨论】:

  • +1 这是一种“已知的解决方法”,但天哪,我希望它不是唯一的!
  • MVC 3 RC 似乎已经修复了这个特殊问题。
  • 是的,这确实在 ASP.NET MVC 3 RC 中得到修复,因为现在 Visual Studio 完全支持 Razor。
  • 我在使用 MVC 3 RC 时遇到了这个问题。
  • 我以为我遇到了 MVC3 RC 的问题,但我意识到我只有在使用 beta 版本时创建的视图有问题,新创建的视图还可以
【解决方案2】:

(这个答案主要是如果有人通过谷歌等找到这个)

正如@Ted Ballou 指出的,您需要将输出类型更改为内容。如果您像我一样在不同的子文件夹中有 100 多个文件,这可能会非常麻烦。

特别是因为如果选择中包含文件夹,则无法一次更新多个文件。

不要通过 GUI 进行更改,而是打开项目文件并直接修改设置。

YourProject.csproj 中更改项目,例如:

<None Include="Views\Foo\Bar.cshtml />

<Content Include="Views\Foo\Bar.cshtml" />

我使用以下正则表达式替换所有文件:

搜索:&lt;None Include="(.+)\.cshtml" /&gt;

替换为:&lt;Content Include="$1.cshtml" /&gt;

现在 Visual Studio 应该在发布时将所有更改的 cshtml 视为Content

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多