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

标签 c# .net visual-studio-2017 .net-standard

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

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

但是,当我尝试在 .NET Framework 项目中安装生成的包时,会生成一个巨大的包依赖项列表,其中包含 .NET 标准中定义的所有包(见下文):

Package dependencies after installation on a .NET 4.5 project.

我知道这些都是定义为 .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/

相关文章:

c++ - 如何在 C++ 中返回我自己的结构?

c# - 使用内部不可变字典构造不可变字典

c# - MVC @RenderSection "sections have been defined but have not been rendered"脚本。多级页面时

C# Linq to CSV 动态对象运行时列名称

.net - 在冲突 dll 引用之间进行选择时,.NET 'primary' 是什么意思?

c# - 更改结构的大小是 C# 中的重大更改吗?

c - 如何运行我在另一台计算机上编写的 c 程序

c# - 为什么要在 ASP.NET 中以这种方式使用 using 语句?

c# - 非空对象上的 EF4 linq NullReferenceException

.net - 如何为 Oracle 数据库创建 Visual Studio 数据库项目?