代码之家  ›  专栏  ›  技术社区  ›  Gary McGill

我的整个解决方案必须是.NETFramework而不是.NETCore,仅仅因为我使用的NuGet包需要.NETFramework吗?

  •  1
  • Gary McGill  · 技术社区  · 7 年前

    1. ASP.NET核心网站
    2. 业务逻辑.NET核心DLL
    3. 数据访问.NET核心DLL

    框架 从我的业务逻辑DLL获取NuGet包(不在我的控制范围内)。

    this answer ,我将业务逻辑项目更改为目标.NET 4.6.1(net461)。

    然而,这迫使我对数据访问项目(从业务逻辑项目中引用)执行相同的操作,并且(尽管我还没有到达那里),我假设我将

    我认为.NET核心在很大程度上是.NET框架的一个子集,除了需要“更大”的框架之外,不会有任何功能上的改变, 那就好了。然而,在重新定位了我的数据访问项目之后,我现在发现缺少了一些东西。例如,它现在使用C#7值元组来反对我。

    一切

    有什么办法吗?我觉得我是在拉扯一根绳子,最终我会回到ASP.NETMVC。。。

    3 回复  |  直到 7 年前
        1
  •  2
  •   Matt H    7 年前

    可以同时针对这两个框架。我在一个项目中工作过,我想以.NETCore2.0为目标,但需要使用.NETFramework包。

    为此,打开.csproj文件并用新的TargetFrameworks标记替换TargetFramework标记

    <TargetFrameworks>net461;netcoreapp2.0</TargetFrameworks>

        2
  •  0
  •   Gary McGill    7 年前

    在与@Svek聊天时,我说服自己必须放弃整个web项目,重新开始一个老式的ASP.NET MVC web项目(或者割腕),现在我发现事实并非如此。

    以下是我认为的要点:

    1. 如果您使用的是使用.NET4.6的NuGet包,那么 不能

    2. 你呢 (根据@Matt H的回答)有一个针对 .NETCore和.NET4.6—但这并没有真正的帮助,因为所做的只是创建两个版本的DLL,只有.NET4.6版本可以使用NuGet包。因此,您的DLL需要以.NET4.6为目标。

    3. 通过扩展,解决方案中的每个项目 参考文献 该DLL还需要以.NET4.6为目标。所以是的,这种传染确实在蔓延-(

    4. 在我的例子中,这意味着我的ASP.NET核心web应用程序 需要以.NET4.6为目标—我起初认为这意味着完全放弃ASP.NETCore,并放弃我在web项目上所做的大量工作。 然而 事实并非如此。

    5. 有可能在.NET4.6上运行ASP.NET核心web应用程序(尽管这似乎不合逻辑)。事实上,在VisualStudio中创建新的ASP.NET核心web应用程序时,您可以选择将.NET4.6作为目标。这将生成一个不同的项目文件,其中包含额外的NuGet依赖项等 this question .

    所以,我最终的解决方案是:

    1. 围绕ASP.NET核心web项目进行黑客攻击,以同时针对“net461”,这意味着更新各种引用并添加更多NuGet包,以使ASP.NET核心组件正常工作(我创建了一个新web项目的两个版本—一个是targeting.NETCore,另一个是targeting.NET4.6—以便了解其中的区别,以及我必须做的更改)。

    完成所有这些之后,我的项目可以正确地编译和运行。这是一个 巨大的

        3
  •  0
  •   André Engelbrecht    7 年前

    https://en.wikipedia.org/wiki/Service-oriented_architecture )

    这似乎是“很长的路要走”,但它确实有它的最终优势,因为分离的逻辑服务和主项目在技术和大多数其他需求方面是相互独立的。

    推荐文章