C# 如何在ASP.NET Core中跨项目共享区域?
我需要在两个或多个项目中共享一些控制器和视图,因为我需要在后端使用相同的逻辑,但我不想重复代码 在Asp Net标准中,我可以创建一个区域的包(这不是很好的解决方案,但它很有效)C# 如何在ASP.NET Core中跨项目共享区域?,c#,asp.net,asp.net-mvc,asp.net-core,C#,Asp.net,Asp.net Mvc,Asp.net Core,我需要在两个或多个项目中共享一些控制器和视图,因为我需要在后端使用相同的逻辑,但我不想重复代码 在Asp Net标准中,我可以创建一个区域的包(这不是很好的解决方案,但它很有效) 在Asp Net核心Web应用程序中,我无法创建包。我想找到一个好的实践解决方案。七年前,当我们不得不解决这个问题时,正是svn:externals功能完成了这一任务,并且一直完美地工作到今天。我知道类似的功能在git中被称为子模块我会利用它作为ASP MVC核心中的功能来组织,这将节省很多时间,我建议分两步进行 首
在Asp Net核心Web应用程序中,我无法创建包。我想找到一个好的实践解决方案。七年前,当我们不得不解决这个问题时,正是svn:externals功能完成了这一任务,并且一直完美地工作到今天。我知道类似的功能在
git
中被称为子模块
我会利用它作为ASP MVC核心中的功能
来组织,这将节省很多时间,我建议分两步进行
功能
拼接的区域。按照文章中的说明将其连接起来,并进行详细解释
//您告诉ASP您还有其他功能区域需要查看
公共IEnumerable ExpandViewLocations(ViewLocationExpanderContext上下文,
IEnumerable视图位置)
{
//为简洁起见,已删除错误检查
变量控制器动作描述符=
context.ActionContext.ActionDescriptor作为ControllerActionDescriptor;
字符串featureName=controllerActionDescriptor.Properties[“feature”]作为字符串;
foreach(视图位置中的变量位置)
{
收益返回位置。替换(“{3}”,featureName);
}
}
共享项目
或可移植库
。我已经附上了网站的链接
R.Williams和MSDN如何做到这一点你的建议奏效了!对于视图文件只有一件事,我做出了一个丑陋的小妥协。我不想编译视图我编写了一个x-copy脚本,从共享项目(我将使用共享项目)/库中复制主项目中的所有视图。@Evillipper很高兴它能工作,请随意编辑我的答案:)这似乎是一个很好的解决方案,但我更喜欢使用共享库。