如何在VS 2017中创建具有最小依赖性的.NET Standard NuGet包?

glo*_*pes 10 .net c# visual-studio-2017 .net-standard

我目前正在使用Visual Studio 2017迁移库项目以支持.NET Standard 1.1.

我希望将该项目作为单个NuGet包发布,该包可以同时针对.NET Framework 4.5+和.NET Core,UWP等.

但是,当我尝试在.NET Framework项目中安装生成的包时,会生成包含.NET标准中定义的所有包的大量包依赖关系列表(请参阅下文):

在.NET 4.5项目上安装后的程序包依赖关系.

据我所知,这些都是作为.NET Standard 1.1规范的一部分定义的程序集.但是,我的特定项目实际上只需要它们中的一小部分,并且对于在项目中安装包的任何人来说,这种依赖性列表将非常混乱.

我试图按照类似问题的答案,其中建议是更改项目规范以仅引用项目所需的确切依赖项.

但是,答案是在旧的project.json格式的上下文中,现在已经被VS 2017中的新.csproj格式所取代.我试图通过删除<TargetFramework>指令删除对.NET Standard 1.1元数据包的依赖,但我只是设法打破了构建,无法找到任何方法专门添加所需的依赖项.

将库迁移到.NET Standard以实现最大平台兼容性的承诺极具吸引力,但建议依赖性的方法是什么,以便针对"经典".NET Framework的项目找不到所有这些依赖项"污染"的项目?

Sco*_*ain 7

更改<TargetFramework><TargetFrameworks>,并添加;net45到它.您仍然可以获得单个NuGet包输出,但现在如果您的目标是.NET核心应用程序(已经具有依赖项),它将只会引入额外的依赖项.