Asp.net core 在同一解决方案上的多个项目之间共享Razor视图

Asp.net core 在同一解决方案上的多个项目之间共享Razor视图,asp.net-core,razor,Asp.net Core,Razor,我有一个解决方案,它有两个ASP.NET核心3.1项目,两个项目的一些视图(cshtml文件)是相同的。我尝试通过在其中一个项目上添加链接来共享它们(添加->现有项->从另一个项目中选择视图->添加为链接,以便它引用相同的物理文件)。我可以编辑project 2中的文件(是的,它确实会按预期更改物理文件),但每当我尝试部署第二个项目(dotnet publish--自包含…)时,它都不会生成包含该视图的project_name.views.dll程序集。但是,如果我添加了文件(从项目1复制),我

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

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

谢谢。

你什么时候做都可以 返回视图() 如果输入视图的名称,它将在此应用程序的视图文件夹中进行搜索 但您可以通过将完整路径放在返回视图(“../../~/name of folders/viewName.cshtml”)中来实现这一点 但不推荐使用,因为它不可维护和重用 返回视图() 如果输入视图的名称,它将在此应用程序的视图文件夹中进行搜索 但您可以通过将完整路径放在返回视图(“../../~/name of folders/viewName.cshtml”)中来实现这一点 但不建议使用,因为它不可维护和重用

将文件添加为链接不会生成部件视图

正如我在评论中提到的,要修复它,我们可以将构建操作设置为
内容

在.csproj文件中


此外,正如@HMZ所建议的,我们可以将共享视图放在一个可以打包和重用的环境中

将文件添加为链接不会生成部件视图

正如我在评论中提到的,要修复它,我们可以将构建操作设置为
内容

在.csproj文件中



此外,正如@HMZ所建议的,我们可以将共享视图放在一个可以打包和重用的文件中。

但问题是,如果这些视图是从VS as链接引用的,则razor编译器不会预编译它们(而不是复制到那里!)但是问题是,如果视图是从VS as链接引用的(而不是复制到那里!),那么razor编译器不会预编译它们。为什么不将共享视图移动到两个项目共享的类库中呢?请检查是否为添加的.cshtml文件将Build Action设置为
Content
。是的,就是这样。它被添加到csproj中,而不是。请添加您的评论作为答案,以便我可以标记为正确。您好@LuisAbreu,很高兴听到它确实帮助解决了问题。我将其添加为一个答案,希望它能帮助其他社区成员快速解决类似问题。为什么不将共享视图移动到两个项目共享的类库中?请检查您是否将添加的.cshtml文件的生成操作设置为
Content
。您好。是的,就是这样。它被添加到csproj中,而不是。请添加您的评论作为答案,以便我可以标记为正确。您好@LuisAbreu,很高兴听到它确实帮助解决了问题。我把它作为一个答案,希望它能帮助其他社区成员迅速解决类似的问题。
<ItemGroup>
  <Content Include="..\ProjectName\Views\Home\Test.cshtml" Link="Views\Home\Test.cshtml" />
</ItemGroup>