带有NETSTANDARD1.0 nuget包的NET461在输出目录中导致其他dll文件

时间:2019-07-13 11:57:55

标签: c# dll nuget .net-standard .net-4.6.1

我想了解有关.net标准的信息。

所以我创建了一个netStandard 1.0 nuget包,并将其添加到我的本地nuget包存储库中。

该软件包仅包含:

public static class Library {
  public static string SayHello => "Hello from Library";
}

然后,我创建了一个名为ConsoleAppNet461的NetFramework 4.6.1控制台应用程序,以测试我的netstandard1.0 nuget程序包。

我使用dotnet-migrate-2017将csproj文件转换为新格式。

AFAIK Net461本机支持netstandard 1.4,并且当通过将缺少的dll文件添加到输出目录来广泛安装netcore sdk> = 2.0时,netstandard 2.0会得到广泛应用。

我的nuget包的TargetFramework设置为:

<PropertyGroup>
  <TargetFramework>netstandard1.0</TargetFramework>
</PropertyGroup>

在添加Nuget包之前,输出目录如下:

before adding nuget package 然后我添加了我的nuget包“ NetStandardLibrary”

adding my nuget package

并重建测试项目。

之后,输出目录看起来像 after adding nuget packags

我想知道为什么这么多的dll被添加到我的输出目录中。 因此,我开始反编译其中一些dll。

例如System.Net.Http.dll

System.Net.Http.dll decompiled

包含实现和一些类型转发。

AFAIK一些较新版本的BCL(包含错误修正)将复制到输出目录。

但现在是我的实际问题。

有些dll文件仅包含类型转发而不包含任何实现。 例如System.AppContext.dll System.AppContext.dll System.AppContext.dll manifest

System.AppContext已在1.3版中添加到网络标准中。

所以我不能在我的netstandard1.0类lib nuget包中使用它,并且不应将Facade Assembly复制到输出目录中。

NetFramework从4.6开始具有System.AppContext。

为什么将此dll添加到我的输出目录中?

0 个答案:

没有答案