我想了解有关.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包之前,输出目录如下:
然后我添加了我的nuget包“ NetStandardLibrary”
并重建测试项目。
我想知道为什么这么多的dll被添加到我的输出目录中。 因此,我开始反编译其中一些dll。
例如System.Net.Http.dll
包含实现和一些类型转发。
AFAIK一些较新版本的BCL(包含错误修正)将复制到输出目录。
但现在是我的实际问题。
有些dll文件仅包含类型转发而不包含任何实现。 例如System.AppContext.dll
System.AppContext已在1.3版中添加到网络标准中。
所以我不能在我的netstandard1.0类lib nuget包中使用它,并且不应将Facade Assembly复制到输出目录中。
NetFramework从4.6开始具有System.AppContext。
为什么将此dll添加到我的输出目录中?