gpt4 book ai didi

c# - 为 ASP.NET 4 和 ASP.NET Core 1.0 创建一个 Nuget 包

转载 作者:行者123 更新时间:2023-11-30 12:42:01 26 4
gpt4 key购买 nike

我们有一个在 ASP.NET 4 中运行并使用 HttpContext.Current 的库。我们知道我们 can't use HttpContext.Current in ASP.NET Core但应该使用 IHttpContextAccessor

我们如何更改此库,以便我们支持 ASP.NET 4(通过使用 HttpContext.Current)和 ASP.NET Core(IHttpContextAccessor) 并打包为一个 NuGet 包?

最佳答案

一种可能:

创建三个库。

  1. 使用 HttpContext
  2. 使用 IHttpContextAccessor
  3. 从这些库之一加载的工厂。

1 和 2 具有相同的程序集名称,Factory 仅引用两者之一。

文件夹中一次只有两个程序集作为引用。工厂和其他两个引用中的一个。

创建一个包含所有三个程序集的 nuget 包。 1 和 2 放在不同的文件夹中,我们称它为 aspnet4 和 aspnet5。

包中还包含 aspnet 项目使用的目标文件。目标文件根据 aspnet 项目中存在的属性将工厂和其中一个库复制到引用文件夹中。此属性可能类似于 aspnet=aspnet5。

这可能是一件太大的事情,可能存在更简单的解决方案。我会想一个更简单的解决方案。

示例代码

//4. AspNetUsageBaseClass Assembly
namespace AspNetUsage
{
//rest of code

public abstract AspNetUsageBaseClass
{
//rest of code
public abstract void HttpContextIHttpContextAccessor();
}
}

//1. AspNetUsage Assembly, Reference AspNetUsageBaseClass Assembly
using AspNetUsage;
public class AspNetUsage:AspNetUsageBaseClass
{
public override void HttpContextIHttpContextAccessor()
{
//HttpContext based code
}
}

//2. AspNetUsage Assembly, Reference AspNetUsageBaseClass Assembly
using AspNetUsage;
public class AspNetUsage:AspNetUsageBaseClass
{
public override void HttpContextIHttpContextAccessor()
{
//IHttpContextAccessor based code
}
}

现在共有 3 个程序集。一个基类程序集。另外两个实现特定功能。内部 nuget 包结构应该是:

AspNetUsageBaseClass.dll - 基类程序集

AspNet4\AspNetUsage.dll - HttpContext 程序集

AspNet5OrCore\AspNetUsage.dll - IHttpContextAccessor 程序集

AspNet.target - 这将导入到 asp net 项目中,并根据属性值提取两个 dll 之一。

在 AspNet 项目中,您将拥有:

AspNetUsageBaseClass context = new AspNetUsage();
context.HttpContextIHttpContextAccessor();

这不是基于 Factory 模式,但可以通过一些修改扩展到基于 Factory 模式。

在没有VS的情况下,我是用记事本打的逻辑,可能会有一些错误。

关于c# - 为 ASP.NET 4 和 ASP.NET Core 1.0 创建一个 Nuget 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35256154/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com