添加为视图的链接intellisense

时间:2017-01-06 18:13:32

标签: asp.net-mvc visual-studio-2015

我尝试使用"添加为链接"来尝试在项目中分享一些观点。 VS2015中的功能,但链接视图在VS中显示为断开,即使它在网站上正常工作。

有没有办法获得像intellisense和"等定义"为链接的视图工作?

我可以使用新的解决方案/项目重现这一点:

  • 将Home / Index.cshtml移动到其他文件夹(目前我正在使用解决方案文件夹,但在移动文件的位置似乎并不重要)
  • 从Home /
  • 删除Index.cshtml
  • 来自主页/右键单击"添加现有项目"
  • 从解决方案文件夹中选择Index.cshtml,但选择" Add as Link"从按钮下拉
  • 链接的Index.cshtml上的
  • 选择属性"复制到输出目录=始终复制"

该网站将正常运行,但在VS2015中,视图显示已损坏且无智能感知。

这是在多个项目之间共享视图的好方法,但如果VS认为视图被破坏,则会产生痛苦。

有什么建议吗?有没有更好的方法来跨项目分享观点?

1 个答案:

答案 0 :(得分:0)

这是我开始工作的痛苦方式:

  1. 卸载解决方案
  2. 创建一个包含我要复制的视图的项目的副本。让我们调用新项目[ SharedItems ]。
  3. 重命名.csproj文件并手动编辑.csproj文件,并用新名称替换旧名称(可能是可选的,但更容易)
  4. 加载解决方案并添加新项目。
  5. 删除您不需要的任何文件。
  6. 重命名新项目中的名称空间。
  7. 构建只是为了确保它正常工作并且Intellisense正常工作。
  8. 删除要在原始项目中链接的文件并创建链接。
  9. 在所有原始项目上安装MSBuild.WebApplication.CopyContentLinkedFiles NuGet包,以自动生成链接文件的物理副本。
  10. 现在,我可以在模板化项目中进行所有编辑,而无需在任何地方保留多个副本。

    两大缺点:

    • 在我看到更改之前,我必须在对任何链接对象进行编辑后进行构建。
    • 我必须仅在[ SharedItems ]项目中打开实际的.cshtml文件。打开链接文件会中断Intellisense,直到您关闭它并直接打开它。这对于Resharper的Search Everywhere功能尤其令人讨厌,因为它建议链接文件。