当前位置: 首页 > 知识库问答 >
问题:

NET5如何构建NetCoreApp3.1?

金晗日
2023-03-14

我正在构建一个Azure函数项目,所以我不能以.NET5为目标。相反,我的项目是一个 。然而,当我的项目被构建时,只要有一些信息被打印出来,我就会看到DotNet5被提到。示例:

警告/usr/share/dotnet/sdk/5.0.101/microsoft.common.currentversion.targets(2123,5):警告MSB3245:无法解析此引用。找不到程序集“System.Text.json,Version=4.0.1.0,Culture=Neutral,PublicKeyToken=CC7B13FFCD2DDD51”。检查以确保磁盘上存在程序集。如果您的代码需要此引用,则可能会得到编译错误。

(我对System.text.json的问题是它自己的问题,在这篇文章中,我想了解。NET 5如何构建NetCoreApp3.1)。

我在我的系统上安装了。NET Core3.1,紧挨着。NET 5。为什么构建系统不使用3.1?我相信。NET 5与3.1相比有一些突破性的变化,所以我不确定是否可以使用。NET 5来构建项目。

同样的事情发生在Azure DevOps管道构建和本地。在本地,在Rider中,我在构建时也看到了这一点:

控制台:使用生成工具:/usr/share/dotnet/sdk/5.0.102/msbuild.dll

以下是 的结果:

drwxr-xr-x 28 root root  12K sty 13 08:24 3.1.405/
drwxr-xr-x 28 root root  12K sty 13 08:24 5.0.102/

你可以看到,我有3.1和5。

共有2个答案

暴德运
2023-03-14

null

如果您在5.0中遇到问题(甚至在构建基础结构中也有一些突破性的更改),您可以在项目根目录中创建一个名为 json ode=""> 的文件,告诉构建系统使用哪个SDK。

null

{
  "sdk": {
    "version": "3.1.101",
    "rollForward": "minor"
  }
}
呼延才
2023-03-14

你需要把三件事分开:

  • 定义核心包中可用的API功能的目标平台(由构建SDK使用)/li>
  • 用于实际执行应用程序的运行时平台,该平台应支持目标平台的API特性/li>

在本例中,构建SDK是5,目标平台是3.1;这是一个精细构建的SDK5,它知道所有关于。NET Core3.1的目标特性,所以它知道该做什么。只要运行库至少是。NET Core3.1,它就应该是正常的(如果我们假定在未来的运行库环境中没有人对核心库进行突破性的更改)。

构建SDK是v5这一事实很有趣,但在很大程度上无关紧要--他们可以给构建SDK提供完全不同的版本号,并且一切都仍然可以工作。让它们保持同步是很有用的,这样你就知道什么是什么了。

如果您真的想要使用特定的构建SDK而不是默认的(这很大程度上意味着:最高的):这就是 可以为您提供的功能。

 类似资料:
  • 我正试图将一个。NET5项目部署到google app engine上,但当我想用。NET5运行时构建时,它似乎有一个问题。

  • 问题内容: 好吧,我安装了elasticsearch-rails gem(版本0.1.5),并且可以清楚地看到gem文件中的任务。 但是当我跑步时 我得到这个错误。 运行也不显示任务。 elasticsearch正在运行,如果我卷曲它会回应我。 为什么这不起作用? 问题答案: 您需要创建elasticsearch.rake

  • 我想创建一个

  • 这个问题是针对开源vscode(在MIT许可下),而不是VS代码。我花了昨天的时间试图找出如何构建某种发布版本。我的意思是,就像在VisualStudio中一样,我们有“调试”和“发布”构建。我是C#开发者,可以这样说,vscode都是基于web技术的。在大学里做过一些javascript,现在是历史。我不知道从哪里开始。有人能给我指出正确的方向和学习的内容吗?对于初学者来说,如何使用自定义exe

  • 我的项目有一个功能良好的TFS构建设置,它与我以前的android项目配合得很好。 所以最近我创建了一个新的Android项目,我试图用TFS构建和创建一个apk,但是当它启动单元测试部分时,我得到了一个错误,它说: 未能应用插件的com。Android内部的应用程序'。 Android Gradle插件需要Java11才能运行。您正在使用Java1.8。您可以尝试以下选项: 更改IDE设置。 改

  • 这个问题的主要原因如下。我正在动态填充,但什么都没有发生。