【问题标题】:Share views (.cshtml files) between projects in asp.net core solution在 asp.net 核心解决方案中的项目之间共享视图(.cshtml 文件)
【发布时间】:2017-02-02 09:56:45
【问题描述】:

我有一个项目,由于各种原因,它有许多基本相同的控制器和视图。目前它们在项目之间复制,因此每个项目中都有多个副本。 我想知道是否有办法将它们放在一个单独的项目中(例如类库项目)并修改视图定位器功能(IViewLocationExpander?)或其他一些方法让它在不同的项目中查看这些视图。

我知道在“完整”的 asp.net 中进行一些修改是可能的,而且它从来都不是很干净或优雅,所以想知道 asp.net 核心是否有更好的方法?

谢谢

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-core


    【解决方案1】:

    您可以创建一个 AspNetCore 类库并使用 AspNetCore Precompiled Views。也如StackOverflow answer 所示。这应该允许您根据需要编译和共享控制器和视图。不再需要部署视图(.cshtml 文件),因为它们将在此类库中进行编译和可用。

    然后添加对此类库项目的引用(如果在同一解决方案中)或将其创建为 Nuget 包并将其添加到其他项目。 (这可以通过私有 Nuget 服务器或本地 Nuget 存储库文件夹完成)。

    更新: ASP.NET Core 2.1 有一个新的Razor SDK,这使得这更简单。它发出一个 Views 程序集 (AppName.Views.dll)。

    【讨论】:

    • 谢谢。我按照上面的链接并将工具/依赖项添加到 project.json。我还将 razor-precompile 添加为“postbuild”脚本,但现在该视图不再存在于项目中而是在共享 DLL 中,它仍然不满意。说它无法在正常搜索位置找到视图。那么我如何在一个公共(被引用的)程序集中引用一个视图呢?
    • 您是否尝试将共享库的命名空间添加到_ViewStart.cshtml(或_ViewImports.cshtml)? @使用你的命名空间
    • 是的,它仍然没有找到它们。当我预编译它们时,它创建了一个我无法引用的 .precompiled.dll,只有
    猜你喜欢
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多