我尝试使用 VS2015 中的“添加为链接”功能在项目之间共享一些 View ,但链接的 View 在 VS 中显示为损坏,即使它在网站上运行良好。
有没有办法让智能感知和“转到定义”等功能适用于链接 View ?
我可以用新的解决方案/项目重现这个:
- 将 Home/Index.cshtml 移动到其他文件夹(目前我正在使用解决方案文件夹,但将文件移动到哪里似乎并不重要)
- 从主页/删除 Index.cshtml
- 从主页/右键单击并“添加现有项目”
- 从解决方案文件夹中选择 Index.cshtml,但从下拉按钮中选择“添加为链接”
- 在链接的 Index.cshtml 上选择属性“复制到输出目录 = 始终复制”
该网站可以正常工作,但在 VS2015 中, View 会出现损坏,并且智能感知不起作用。
这将是跨多个项目共享 View 的好方法,但如果 VS 认为 View 已损坏,那么开发就会变得很痛苦。
有什么建议吗?有没有更好的方法来跨项目分享 View ?
最佳答案
这是我让它发挥作用的痛苦方法:
- 卸载解决方案
- 创建包含我要复制的 View 的项目之一的副本。我们将新项目命名为 [SharedItems]。
- 重命名
.csproj
文件并手动编辑.csproj
文件,并将旧名称替换为新名称(可能是可选的,但使事情变得更容易) - 加载解决方案并添加新项目。
- 删除您不需要的所有文件。
- 重命名新项目中的命名空间。
- 构建只是为了确保其正常工作并且 Intellisense 正常工作。
- 删除原始项目中要链接的文件并创建链接。
- 在所有原始项目上安装了
MSBuild.WebApplication.CopyContentLinkedFiles
NuGet 包,以自动制作链接文件的物理副本。
现在我可以在模板化项目中进行所有编辑,而无需在各处维护多个副本。
两大缺点:
- 我必须在编辑任何链接对象后进行构建,然后才能看到更改。
- 我只需打开 [SharedItems] 项目中的实际 .cshtml 文件。打开链接文件会破坏 Intellisense,直到您关闭它并直接打开它。这对于 Resharper 的 Search Everywhere 功能来说尤其烦人,因为它会建议链接文件。
关于asp.net-mvc - 添加为 View 的链接智能感知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41511770/