【发布时间】:2019-03-08 17:33:31
【问题描述】:
我有一个项目,目标框架是.net standard 2.0,我们在源代码中使用System.Runtime.InteropServices.RuntimeInformation.OSDescription,但是这个库不支持.net framwwork 4.6.1。昨天,我们的一个客户报告了一个错误,关于这个问题。他的本地框架是.net framework 4.6.1。
我可以设置目标框架以在用户添加来自 Nuget 包的引用时通知用户吗?
并且为了让用户知道你的本地框架是不是4.6.1,你不应该使用这个版本包,会导致bug。
当我将目标框架设置为:
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net471</TargetFrameworks>
<PropertyGroup/>
然后运行dotnet build我得到错误信息:
错误 MSB3644:未找到框架“.NETFramework,Version=v4.7.1”的参考程序集。 要解决此问题,请为此框架版本安装 SDK 或 Targeting Pack 或将您的应用程序重新定位到您安装了 SDK 或 Targeting Pack 的框架版本。 请注意,程序集将从全局程序集缓存 (GAC) 中解析,并将用于代替引用程序集。 因此,您的程序集可能无法正确定位于您想要的框架。
然后我去office网站下载.net framework 4.7.1 SDK,但是安装失败。 错误信息是
此计算机上已安装 .NET Framework 4.7.1 或更高版本的更新
所以我很困惑!
【问题讨论】:
-
您必须使用文本编辑器“手动”编辑 csproj 文件
-
@SirRufo 我实际上是手动编辑了这个 csproj 文件。但是当我构建项目时,它会输出错误
-
所以请编辑问题以显示您做了什么,以及错误是什么。
-
嗯...这对我来说很好。听起来 .NET Core SDK 由于某种原因找不到参考程序集。您使用的是哪个版本的 .NET Core SDK?你的环境有什么“奇怪”的地方值得一提吗?