在asp.net核心解决方案中的项目之间共享视图(.cshtml文件)

时间:2017-02-02 09:56:45

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

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

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

由于

1 个答案:

答案 0 :(得分:2)

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

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

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