Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Net核心将项目迁移到3.1:我们是否应该首先升级公共/共享项目?_C#_.net_Asp.net Core_.net Core_Asp.net Core 3.1 - Fatal编程技术网

C# Net核心将项目迁移到3.1:我们是否应该首先升级公共/共享项目?

C# Net核心将项目迁移到3.1:我们是否应该首先升级公共/共享项目?,c#,.net,asp.net-core,.net-core,asp.net-core-3.1,C#,.net,Asp.net Core,.net Core,Asp.net Core 3.1,我们即将升级我们的.Net核心解决方案。我们有多种微服务,如: 顾客 账单 帐目 存货 市场营销 他们都依赖于公共设施项目。它包含了一些很棒的工具,如: 文件解析器 扩展方法 常用功能/方法 等等 在整个公司都使用 当我们想从2.2升级到3.1时,哪个应该是第一个项目 我想知道如果我们所有的2.2微服务都指向3.1公用事业项目怎么办 a) 这些项目是否向前兼容 b) 如果新的(3.1)通用项目没有正确升级,那会怎样?这就是为什么所有其他解决方案都可能面临错误的原因 c) 我的建议是从将所有

我们即将升级我们的.Net核心解决方案。我们有多种微服务,如:

  • 顾客
  • 账单
  • 帐目
  • 存货
  • 市场营销
  • 他们都依赖于公共设施项目。它包含了一些很棒的工具,如:

    • 文件解析器
    • 扩展方法
    • 常用功能/方法
    • 等等
    在整个公司都使用


    当我们想从2.2升级到3.1时,哪个应该是第一个项目

    我想知道如果我们所有的2.2微服务都指向3.1公用事业项目怎么办

    a) 这些项目是否向前兼容

    b) 如果新的(3.1)通用项目没有正确升级,那会怎样?这就是为什么所有其他解决方案都可能面临错误的原因

    c) 我的建议是从将所有5个微服务升级到3.1开始,最后将通用解决方案升级到3.1。这是最佳解决方案吗


    如果公共项目发布到内部nuget提要,我将尝试通读。 通过使用.csproj中的目标框架,您可以创建针对.net core 3.1和2.2的通用项目的新版本

    <TargetFrameworks>netcoreapp2.2;netcoreapp3.1</TargetFrameworks>
    
    netcoreapp2.2;netcoreapp3.1
    
    然后,您可以更新每个单独的服务

    如果所有内容都在同一个解决方案中,并且您使用的是项目引用,那么您并不是真正在做微服务,我建议将公共代码放在不同的解决方案中,并将它们发布到内部nuget提要

    当我们升级时,我们首先升级我们的通用包。然后,我们选择了一个简单的服务来升级到.NETCore3.1,并通过nuget升级它的所有依赖项,包括我们的通用包

    在第一次升级时,我们在自定义Swashback代码方面遇到了一些问题,但在我们完成了一项服务之后,其他的服务将一帆风顺

    关键是对所有依赖项使用nuget,也就是在共享库中自己编写的依赖项


    我们首先更新了公共包,因为如果不使用新版本,它不会影响任何服务。只有在微服务中更新公共包的版本时,才会影响服务


    您可以通过设置nuget软件包的正确分支/预发布标记来设置Common,并为您的软件包制定明确的版本策略。

    如果公共项目发布到内部nuget提要。 通过使用.csproj中的目标框架,您可以创建针对.net core 3.1和2.2的通用项目的新版本

    <TargetFrameworks>netcoreapp2.2;netcoreapp3.1</TargetFrameworks>
    
    netcoreapp2.2;netcoreapp3.1
    
    然后,您可以更新每个单独的服务

    如果所有内容都在同一个解决方案中,并且您使用的是项目引用,那么您并不是真正在做微服务,我建议将公共代码放在不同的解决方案中,并将它们发布到内部nuget提要

    当我们升级时,我们首先升级我们的通用包。然后,我们选择了一个简单的服务来升级到.NETCore3.1,并通过nuget升级它的所有依赖项,包括我们的通用包

    在第一次升级时,我们在自定义Swashback代码方面遇到了一些问题,但在我们完成了一项服务之后,其他的服务将一帆风顺

    关键是对所有依赖项使用nuget,也就是在共享库中自己编写的依赖项


    我们首先更新了公共包,因为如果不使用新版本,它不会影响任何服务。只有在微服务中更新公共包的版本时,才会影响服务


    您可以通过设置nuget软件包的正确分支/预发布标记来设置Common,并为您的软件包制定明确的版本策略。

    如果通用软件包只是工具,我强烈建议您首先将其转换为.Net标准,通过这种方式,它们可以被所有.Net核心版本以及您可能拥有的任何旧框架使用。

    如果通用软件包只是工具,我强烈建议您首先将它们转换为.Net标准,这样它们就可以被所有.Net核心版本以及您可能拥有的任何旧框架使用。

    可能会先更新您的软件包吗?一般来说,这里没有正确的答案。由您决定您的升级策略可能是首先更新您的软件包?一般来说,这里没有正确的答案。由您决定您的升级策略参见文档:我们首先更新了通用包,因为如果不使用新版本,它不会影响任何服务。只有在微服务中更新公共包的版本时,才会影响服务。在csproj文件中,您的通用包是PackageReferences还是ProjectReference?好的,我们有NUGET,所以一旦我们将common升级到3.1,然后向中添加新方法,2.2项目不能再使用添加的方法了?您可以通过设置nuget软件包的正确分支/预发布标签,并为您的软件包制定明确的版本策略。我同意@PrebenHuybrechts的策略。这与我在几个大型项目中使用的方法相同。还值得注意的是,除了任何与ASP.NET相关的实用程序之外,我希望您的共享类库有最少的破坏性更改(如果有的话)。我在升级过程中遇到的大多数挑战都与MVC工具的深入定制有关。其他大部分都继续工作。请参阅文档:我们首先更新了通用包,因为如果不使用新版本,它不会影响任何服务。只有在微服务中更新公共包的版本时,才会影响服务。在csproj文件中,您的通用包是PackageReferences还是ProjectReference?好的,我们有NUGET,所以一旦我们将common升级到3.1,然后添加新方法,2.2项目就不能再使用添加的方法了?您可以