我有一个项目,由于各种原因,有许多控制器和视图基本相同.目前,它们在项目之间进行复制,因此每个项目中都有几个副本.
我想知道是否还有将它们放在一个单独的项目(例如类库项目)中并修改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).