【问题标题】:Can I use "Roslyn" in Visual Studio 2017 with .NET 4.7?我可以在带有 .NET 4.7 的 Visual Studio 2017 中使用“Roslyn”吗?
【发布时间】:2017-04-13 01:34:19
【问题描述】:

我已经使用脚本功能和 Microsoft.CodeAnalysis nuget 升级了我的项目,它下载了数百个依赖 System.* 包。之前只有 Microsoft.CodeAnalysis.Common、CSharp、CSharp.Workspaces 等。发生了什么?它是否适用于带有 .NET Framework 4.7 的 Visual Studio 2017?还是它包含在 4.7 中(我在任何地方都没有找到)?我应该等吗?

【问题讨论】:

  • Roslyn 包可与 Visual Studio 2017 配合使用。您能描述一下您遇到的问题吗?
  • 是的。正如我所说,我已将包 (Microsoft.CodeAnalysis) 更新为 2.0。它下载了大量的 System.*.dll 依赖项。例如 System.Linq 或 System.Collections(等等)。这些被添加为我的项目的参考,并有效地替换了指向 GAC 的标准 System.Linq。似乎这个 nuget 没有将 .NET Framework 4.7 识别为令人满意的依赖项或其他东西。
  • 下载的 System.* nuget 是 v4.3.0。
  • 似乎 Microsoft.CodeAnalysis.Common 包具有所有这些依赖项 (>=4.3.0) 并强制它们下载。
  • 我正在查看 Microsoft.CodeAnalysis (2.0.0) 的依赖项,它依赖于 .NET Standard 1.3。根据.NET Standard 的平台表,.NET Framework 4.6+ 应该实现它。我希望 4.7 也能做到这一点。然而,这并没有以某种方式被接受。但是,如果我删除所有依赖项(那些额外的 System.* nugets),它仍然可以构建。因此,将 4.7 检测为有效依赖项存在一些问题。要么它太新,要么某处存在更深层次的问题。有可能吗?

标签: c# visual-studio-2017 roslyn roslyn-code-analysis .net-4.7


【解决方案1】:

Microsoft.CodeAnalysis.Common 的旧版本只有 .Net 4.5 的变体,几乎没有依赖项。

但从 1.3.0 版开始,该软件包还有一个 .Net Standard 1.3 变体,它具有许多依赖项,这与 .Net Standard 1.x 软件包一样。在将此类包安装到面向 .Net Framework 4.7 的项目中时,NuGet 会安装所有 .Net Standard 依赖项。据我所知,这没有什么问题,项目应该可以正常运行。

【讨论】:

  • 但是 .NET Framework 4.7 已经包含 .NET Standard 1.3 (.NS)。这些依赖项(System.Linq)淘汰了一些 .NET 4.7(系统)程序集,并用 .NS 库(主要是 lib\net46)替换它们。我想在 4.7 中应用,而不是在 4.6 中部分应用。我不关心一些晦涩的程序集,但不关心 System.Linq 和 System.Colllections。此外,我可能需要将这些与软件一起分发,而不是仅仅依赖安装的 .NET 4.7。但我想这是一个解释。悲伤,但解释。
  • @SmartK8 这些包中的大多数不包含任何针对 .Net 4.x 的实现。它们要么只是引用程序集(没有实现),要么是实现程序集类型转发到 .Net Framework 程序集。
  • 好吧,我想这更合理一些。但是仍然......我只是删除了那些不需要的包(我认为没有理由拥有它们)。它仍然可以构建(IMO 显示它们不需要,并且在检测 4.7 中的 .NET Standard 依赖项时存在一些问题)。更新会很痛苦,但这并不常见。也许他们会在 Nuget manager 未来的补丁中解决这个问题。
猜你喜欢
  • 1970-01-01
  • 2019-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-20
  • 2020-02-02
  • 2018-02-19
相关资源
最近更新 更多