首页 新闻 搜索 专区 学院

如何发布多个 TargetFramework 的nuget 包

0
悬赏园豆:30 [已解决问题] 解决于 2019-03-08 19:47

.csproj 文件中声明了

<TargetFrameworks>netstandard2.0;net471</TargetFrameworks>

但是用dotnet pack 命令发布时一直报以下的错:

error MSB3644: 未找到框架“.NETFramework,Version=v4.7.1”的引用程序集。若要解决此问题,请安装此框架版本的 SDK 或 Tar
geting Pack,或将应用程序的目标重新指向已装有 SDK 或 Targeting Pack 的框架版本。请注意,将从全局程序集缓存(GAC)解析程序集,并将使用这些程序集替换引用程序集。因此,程序集的目标可能未正确指向您所预期的框
架

然后安装 net471的框架也安装不了,请问如何解决?

遇到的问题是:项目依赖的是.net standard 2.0 ,但是用户用的是 net461, netstand 的方法net461没有,导致程序报错!

BUTTERAPPLE的主页 BUTTERAPPLE | 老鸟四级 | 园豆:3141
提问于:2019-03-08 10:48
< >
分享
最佳答案
0

.csproj 文件中编写如下

<TargetFrameworks>netstandard2.0;net471</TargetFrameworks>

这时如果你编译,或许会遇到System.Web 冲突的问题,或者是System.Web.HttpUlitity 在上下文中不存在。然后加入下面这句

<ItemGroup Condition=" '$(TargetFramework)' == 'net471' ">
    <Reference Include="System.Web" />
  </ItemGroup>

就可以完美build 了,就解决了该问题了。

还有.net framework 4.7.1 框架装不了的原因也找到了,是因为我用错安装包了,没有下载 developer 的版本,正确的地址是
https://www.microsoft.com/en-us/download/details.aspx?id=56119 然而我用了这个 https://www.microsoft.com/en-us/download/details.aspx?id=56116

BUTTERAPPLE | 老鸟四级 |园豆:3141 | 2019-03-08 19:47
其他回答(1)
0

.net framework 4.7.1 本来就支持 .net standard 2.0 ,直接发布 netstandard2.0 就可以在 net471 项目中使用,详见 实际体验 .NET Standard 2.0 的魅力

收获园豆:30
dudu | 园豆:37173 (高人七级) | 2019-03-08 12:57

.netframework471 是支持的,主要是有个问题是,用户在用的框架版本是 .net framwork 461 的,然后使用我们发的包之后,发现运行报错。
问题出现的原因主要是:我们在项目中用了 System.Runtime.InteropServices.RuntimeInformation.OSDescription 来获取OS版本,但这个支持最低运行的 framework 为 471, 我就是想用户下载这个nuget包后,提示他最低支持的框架为 471,然而在 csproj 中找不到设置的办法。

支持(0) 反对(0) BUTTERAPPLE | 园豆:3141 (老鸟四级) | 2019-03-08 13:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册