添加为视图的链接智能感知

Bar*_*000 5 asp.net-mvc visual-studio-2015

我试图通过使用 VS2015 中的“添加为链接”功能跨项目共享一些视图,但链接视图在 VS 中似乎已损坏,即使它在网站上运行良好。

有没有办法让智能感知和“转到定义”等功能适用于链接视图?

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

  • 将 Home/Index.cshtml 移动到其他文件夹(目前我正在使用解决方案文件夹,但我将文件移动到哪里似乎无关紧要)
  • 从 Home/ 中删除 Index.cshtml
  • 从主页/右键单击并“添加现有项目”
  • 从解决方案文件夹中选择 Index.cshtml 但从按钮下拉菜单中选择“添加为链接”
  • 在链接的 Index.cshtml 上选择属性“复制到输出目录 = 始终复制”

该站点可以正常工作,但在 VS2015 中,视图会出现损坏并且没有智能感知工作。

这将是跨多个项目共享视图的好方法,但如果 VS 认为视图已损坏,则开发会很痛苦。

有什么建议?有没有更好的方法来跨项目共享视图?

Kco*_*der 0

这是我让它发挥作用的痛苦方法:

  1. 卸载解决方案
  2. 创建包含我要复制的视图的项目之一的副本。我们将新项目命名为 [ SharedItems ]。
  3. 重命名.csproj文件并手动编辑文件,.csproj然后用新名称替换旧名称(可能是可选的,但使事情变得更容易)
  4. 加载解决方案并添加新项目。
  5. 删除任何不需要的文件。
  6. 重命名新项目中的命名空间。
  7. 构建只是为了确保它正常工作并且智能感知正常工作。
  8. 删除原始项目中要链接的文件并创建链接。
  9. 在所有原始项目上安装MSBuild.WebApplication.CopyContentLinkedFilesNuGet 包以自动制作链接文件的物理副本。

现在,我可以在模板化项目中进行所有编辑,而无需在各处维护多个副本。

两大缺点:

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