1

我有一个具有 2 个 ASP.NET Core 3.1 项目的解决方案,并且两个项目的某些视图(cshtml 文件)相同。我尝试通过在其中一个项目上添加链接来共享它们(添加->现有项目->从另一个项目中选择视图->添加为链接,以便它引用相同的物理文件)。我可以编辑项目 2 中的文件(是的,它确实按预期更改了物理文件),但是每当我尝试部署第二个项目(dotnet publish --self-contained...)时,它都不会生成带有视图的 project_name.views.dll 程序集。但是,如果我确实添加了文件(从项目 1 复制),我会得到带有视图的视图程序集。

作为参考添加的视图,而不是从其他项目中复制的视图

关于为什么将文件添加为链接不会生成视图程序集的任何线索?

谢谢。

4

2 回答 2

0

您可以在返回 view() 时执行此操作,如果您输入视图的名称,它将在此应用程序的视图文件夹中搜索,但您可以通过将完整路径放在返回视图中来执行此操作 ("./../~/文件夹名称/viewName.cshtml") 但不推荐,因为它不可维护和可重用

于 2020-10-13T11:58:13.957 回答
0

将文件添加为链接不会生成视图程序集

正如我在评论中提到的,要修复它,我们可以将Build Action设置为Content.

在此处输入图像描述

在 .csproj 文件中

<ItemGroup>
  <Content Include="..\ProjectName\Views\Home\Test.cshtml" Link="Views\Home\Test.cshtml" />
</ItemGroup>

此外,正如@HMZ 建议的那样,我们可以将共享视图放在可以打包和重用的Razor 类库项目中。

于 2020-10-13T13:47:21.810 回答