我已经使用Visual Studio 2017将我的一些类库转换为.NET Standard。
这很简单,添加一个.NET Standard类库代替原始项目并添加所有文件。 .csproj文件现在看起来像一个nuspec文件,包含包信息等。在项目选项中,有一个"在构建"上生成NuGet包的复选框,我检查了它。容易腻。
但是,我的类库的.NET Framework消费者现在获得了大量的依赖关系,我计算了至少20个已添加的其他nuget包,其中大部分对我的库来说是完全不必要的。换句话说,“易于”太强容易?"
这只是我使用.NET Standard作为 only 构建输出的副产品吗?我还应该添加一个.NET Framework库吗?
以下的软件包将添加到使用我的库的项目中,即使它们完全没必要:
等。这里添加了大量的软件包。我的图书馆确实得到了“荣耀”#34;数组分析并不需要太多。
Visual Studio项目配置为以.NET Standard 1.0为目标,唯一可见的引用是" NETStandardLibrary"所以不像我自己添加了所有这些。
我已经检查了包裹,它似乎也没有列出所有这些。
我是否可以只添加我需要的软件包并仍然以.NET Standard 1.0为目标?
我的课程库是开源的:https://github.com/lassevk/DiffLib
nuget包在这里:http://www.nuget.org/packages/difflib/2017.4.24.2347
答案 0 :(得分:6)
目前情况非常复杂:
我是否可以只添加我需要的软件包并仍然以.NET Standard 1.0为目标?
是的,你可以这样做,但不再推荐这样做了。实质上,.NET Standard
是一个由引用它的包组成的规范。支持的方式是引用NETStandard.Library
,因为它保证为您提供所需的所有编译引用和逻辑,以便正确构建。
从即将到来的netstandard2.0
开始,NETStandard.Library
将是一个没有依赖关系的扁平包,如果您的项目或任何其他项目引用它们,将从依赖关系树中删除单个包。此外,NETStandard.Library
不会作为依赖项发布 - 因此,如果您构建一个netstandard2.0
库,生成的NuGet包将没有依赖项。 (。NETStandard.Library.NETFramework
在.net框架项目中使用时需要安装 - NuGet应该自动执行此操作。
话虽如此,如果你真的想这样做,你可以设置
<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
在csproj
文件中,然后为您需要的所有内容添加<PackageReference Include="System.[Something]" Version="4.3.0" />
等项目。