我目前正在使用 Visual Studio 2017 迁移库项目以支持 .NET Standard 1.1。
我希望将该项目作为单个 NuGet 包发布,该包可以同时针对 .NET Framework 4.5+ 和 .NET Core、UWP 等。
但是,当我尝试在 .NET Framework 项目中安装生成的包时,会生成一个巨大的包依赖项列表,其中包含 .NET 标准中定义的所有包(见下文):
我知道这些都是定义为 .NET Standard 1.1 规范一部分的程序集。然而,我的特定项目实际上只需要其中的一小部分,这个依赖列表对于在他们的项目中安装该包的任何人来说都会非常困惑。
我试图按照 similar question 的答案进行操作其中建议更改项目规范以仅引用项目所需的确切依赖项。
但是,答案是在旧的 project.json 格式的上下文中,它现在已被 VS 2017 中的新 .csproj 格式所取代。我试图通过删除<TargetFramework>
指令,但我只是设法破坏了构建,找不到任何方法来专门只添加所需的依赖项。
将库迁移到 .NET Standard 以实现最大平台兼容性的 promise 非常有吸引力,但是构建依赖关系的推荐方法是什么,这样针对“经典”.NET Framework 的项目不会发现它们的项目被所有人“污染”这些依赖关系?
最佳答案
更改 <TargetFramework>
至 <TargetFrameworks>
并添加 ;net45
给它。您仍然可以获得单个 NuGet 包输出,但现在如果您的目标是 .NET 核心应用程序(它已经具有依赖项),它只会引入额外的依赖项。
关于c# - 如何在 VS 2017 中创建具有最小依赖性的 .NET Standard NuGet 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42855180/