【问题标题】:Can I target both .net standard2.0 and net471 in csproj file我可以在 csproj 文件中同时定位 .net standard2.0 和 net471
【发布时间】: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 或更高版本的更新

所以我很困惑!

这是我的dotnet --info

【问题讨论】:

  • 您必须使用文本编辑器“手动”编辑 csproj 文件
  • @SirRufo 我实际上是手动编辑了这个 csproj 文件。但是当我构建项目时,它会输出错误
  • 所以请编辑问题以显示您做了什么,以及错误是什么。
  • 嗯...这对我来说很好。听起来 .NET Core SDK 由于某种原因找不到参考程序集。您使用的是哪个版本的 .NET Core SDK?你的环境有什么“奇怪”的地方值得一提吗?

标签: c# .net-core


【解决方案1】:

好像开个玩笑,我从.net framework 4.7.1下载了.net framework 4.7.1,但是安装不了。但是,当我使用 Visual Studio Installer 安装 .net framework 4.7.1 时。没关系。 现在运行dotnet build,它成功了。我更困惑,为什么不能从.exe文件安装它。

【讨论】:

  • 你刚刚下载了错误的东西。您需要的是 developer pack,它包含您在项目的 References 节点中看到的文件。意图不是强迫您的用户更新他安装的框架版本。不清楚为什么喜欢4.7.1,但是开发者包下载is here
猜你喜欢
  • 2018-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-27
  • 1970-01-01
相关资源
最近更新 更多