VS2017 netcore 发布遇到错误,框架依赖型应用程序主机需要一个至少netcoreapp2.1的目标框架

一、引言

.netcore目前处于高速发展时期,版本更新比较快,vs2017最新版本对.netcore支持也跟进的比较快,使用最新版本的vs2017开发历史版本的.netcore项目时多多少少会碰到一些兼容性问题,虽然微软声称是兼容历史版本的,但是采坑依然是少不了的。

二、问题

开发环境:VS2017(版本号15.8.1)

团队项目使用的是.netcore 2.0开发的,项目在本机编译运行都是ok的,但是发布时候发布失败了,提示如下错误:

Web发布活动窗口如下提示:

重点在这句提示:

C:\Program Files\dotnet\sdk\2.1.400\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets(125,5): 错误 NETSDK1068: 框架依赖型应用程序主机需要一个至少 “netcoreapp2.1” 的目标框架。

意思就是使用.netcore 2.1.400版本的SDK发布项目,需要项目的框架为netcoreapp2.1,即:

经测试,目标框架选择为.Net Core 2.1后正常发布,但是项目还没做好全面升级到2.1的准备,不确定这么改会不会导致其他问题,所以需要考虑其他解决途径。

三、解决方法

本人VS是在线安装的,我们可以看到默认安装的.netcore sdk有这几个版本的:

再对比了下同事可以正常使用的:

可以发现项目使用.netcore 2.1.201版本的SDK是可以正常编译发布的,那就安装.netcore SDK 2.1.201吧。因为.netcore是开源的,git上可以找到各个历史版本的下载地址,2.1.201地址是https://github.com/dotnet/core/blob/master/release-notes/download-archives/2.1.201-sdk-download.md,或者去微软的官方地址下载https://www.microsoft.com/net/download/dotnet-core/2.0,可以看到各个版本的SDK,以及SDK对应的Runtime。

根据版本号下载安装需要安装的SDK和Runtime即可

【重点】配置项目使用的SDK:

Win+R,输入cmd,打开命令行,使用cd命令进入项目所在目录,执行命令:

dotnet new global.json --sdk-version 2.1.201

此命令的版本号根据自己实际情况调整。

dotnet --version

可以查看项目当前使用的SDK版本号

创建成功以后,可以看到项目目录下生成了一个global.json文件,内容为:

{
  "sdk": {
    "version": "2.1.201"
  }
}

此后再使用VS生成发布项目就可以正常发布了。SDK对应的Runtime也是需要安装的,不然项目可以编译发布不能本机运行。

四、番外

微软的版本帝并非浪得虚名,上边提供的两个.netcore SDK 2.1.201的下载地址,细心就可以发现,对应的Runtime版本号竟然是不一样的!!!

git上给出的下载地址是v2.0.7

另外一个对应的竟然是2.0.8

只测试了下Runtime2.0.7可以使用

猜你喜欢

转载自blog.csdn.net/shujudeliu/article/details/82115111
今日推荐