gpt4 book ai didi

asp.net-core - 如何防止安装与100%.Net Core 2.0不兼容的nuget软件包?

转载 作者:行者123 更新时间:2023-12-04 04:09:45 25 4
gpt4 key购买 nike

我了解.Net Core 2具有一个兼容性垫片,允许它使用不专门针对.Net Core/Standard 2的Nuget程序包。这使它可以访问70%的Nuget。很棒-不错的功能。

如何防止安装与.Net Core 2/.Net Standard 2不完全兼容的nuget软件包?或在安装时警告我将其与垫片一起使用?

我创建了一个新的.Net Core 2.0项目,安装了EF 6.1.3(我知道那是行不通的),但并没有阻止我或警告过它在安装时没有针对.Net Standard <= 2。

我很高兴“用剪刀奔跑”,但是我觉得在将MVC5和EF 6.1.3安装到.Net Core 2应用程序中之前,我应该会得到警告。我真的很想防止初级开发者安装不受支持的软件包等。

我想进一步回答Matt Ward的问题-我的主要观点是-是否可以检测到某些东西在安装时实际上是100%兼容的,还是我们总是只在需要自己确定软件包能“足够好”地工作的情况下。我希望有一种技术机制可以检测到缺少的覆盖API覆盖范围,并可以告诉我们nuget包可能无法像以前那样运行。所以我想MS说70%的兼容性-如果我尝试安装30%的兼容性,我会失败

最佳答案

如果您想100%确定,请针对.NET Portability Analyzer和.NET Standard 2.0配置文件运行该程序包。
它不会告诉您是否将调用该API(决不是自动过程),即使程序集包含任何与.NET Standard 2.0不兼容的API也是如此。
但是,您也只能对分析器运行应用程序,因为.NET可移植性分析器应该能够跟踪从该应用程序所做的任何引用,并对其进行检查。
更新
您可以将其构建到构建服务器管道中,以获得更自动的保证。
The .NET Portability Analyzer Docs
不需要Visual Studio,只需从https://github.com/Microsoft/dotnet-apiport/releases下载并运行
从文档中:

  • Type the following command to analyze the current directory: \...\ApiPort.exe analyze -f .
  • To analyze a specific list of .dll files, type the following command: \...\ApiPort.exe analyze -f first.dll -f second.dll -f third.dll

旧答案(与马特的答案结合使用可能会很有用)
未经测试,但尝试一下:
<!-- old dotnet tooling/.NET Core 1.x -->
<PackageTargetFallback>netstandard2.0;portable-net45+win8</PackageTargetFallback>
<!-- new dotnet tooling/.NET Core 2.0 -->
<AssetTargetFallback>netstandard2.0;portable-net45+win8</AssetTargetFallback>
通常,您想要像
<!-- old dotnet tooling/.NET Core 1.x -->
<PackageTargetFallback>$(PackageTargetFallback);dotnet5.6;portable-net45+win8</PackageTargetFallback>
<!-- new dotnet tooling/.NET Core 2.0 -->
<AssetTargetFallback>$(AssetTargetFallback);dotnet5.6;portable-net45+win8</AssetTargetFallback>
$(PackageTargetFallback)将告诉MSBuild保留旧值,然后将旧值附加到其后。但是由于 $(PackageTargetFallback)可能(现在无法进一步查看/深入研究)在其中具有.NET Framework名称,因此您将使用自己的值覆盖它。
此外
鉴于现在不建议使用 PackageTargetFallback,因此应该改用 AssetTargetFallback

关于asp.net-core - 如何防止安装与100%.Net Core 2.0不兼容的nuget软件包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45712404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com