【发布时间】:2018-12-28 17:54:24
【问题描述】:
问题:
如何在具有 3 个平台的 VisualStudio2017 解决方案中管理 nuget 包:
- .Net 标准 1.3
- .Net Framework 4.6
- .Net Core 1.0
?
我喜欢PackageReference 方法,但我不知道如何使用它。他们谈论:
<ItemGroup>
<!-- ... -->
<PackageReference Include="Contoso.Utility.UsefulStuff" Version="3.6.0" />
<!-- ... -->
</ItemGroup>
- 这是否意味着通常我需要为每个框架/标准/核心至少 3 个 PackageReferences?
- 遇到
.Net Framework 4.6时如何管理版本? - 由于 nuget 版本兼容性问题,当我无法运行引用
.net standardlib 的控制台.net core应用程序时,我也遇到了这个问题。
另外,我想提一下,我看到几篇文章说.csprojs 回来了,不需要.xproj、project.json。就个人而言,我喜欢这个想法来处理.csprojs,就像以前一样。
上下文:
我不是以英语为母语的人,而且我对重要的 nuget 用法和 .Net Core/Standard 开发非常陌生。
我正准备将.Net Framework 应用程序移植到.Net Framework+Standard+Core。
这现在只是一个 WPF 应用程序。但在未来它打算保持相同的 WPF 应用程序,但也有一个新的 .Net Core 分支,从现有的逻辑提出。
我不知道可能的新.Net Core 分支的具体计划是什么。最有可能的计划是创建一个ASP.Net Core 网站。
我确定的是,任务是保持逻辑以.Net Framework 运行(使用WPF UI)并将其实现为.Net Core。
我决定使用Framework+Standard+Core 的组合作为解决方案,因为它很简单。我的意思是这个概念很容易理解:2 个分支(FWK、Core)使用的基类(standard)。
代码中不需要多目标或指令(条件编译)。
暗示应该通过复制粘贴和修改从头开始创建新的解决方案。
仍然不能 100% 确定这个决定的合理性。
但问题意味着要采用这种方法:Framework+Standard+Core。
我希望这个问题是合理的;我的意思是,在这种情况下有效管理 nuget 包是成功跨平台项目的良好开端。谢谢!
【问题讨论】:
-
当您卡在 .NET Framework 4.6 上时,请务必为
net46和netstandard20创建一个多目标核心库。定位netstandard13是没有意义的,因为那里的API 非常有限,而且您不需要支持像WP 或Silverlight 这样的旧平台。用PackageReference做你的实验,你甚至不需要问第一个问题。 “由于 nuget 版本兼容性问题,当我无法运行引用 .net 标准库的控制台 .net 核心应用程序时,我也遇到了这个问题”究竟是什么问题? -
@LexLi 这不是“毫无意义的”——除非您积极尝试针对一些低级框架,例如 windows phone,否则它通常没有用处
-
@LexLi,非常感谢!做多目标可能是个好主意。至于版本兼容性问题:我无法在 vs17 中运行引用 netstandard1.3 库的 netcore1.0 控制台应用程序(请参阅下一条评论)。谢谢!
-
@LexLi,输出:程序“[12780] dotnet.exe”已退出,代码为 -2147450751 (0x80008081)。程序“[1996] iisexpress.exe”已退出,代码为 0 (0x0)。
标签: .net .net-core nuget .net-standard packagereference