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

我有一个项目,由于各种原因,有许多控制器和视图基本相同.目前,它们在项目之间进行复制,因此每个项目中都有几个副本.

我想知道是否还有将它们放在一个单独的项目(例如类库项目)中并修改View Locator功能(IViewLocationExpander?)或其他一些方法让它在这些视图的不同项目中查找.

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

谢谢

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

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

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

点赞