当.NET Core仍然使用该project.json格式时,您可以构建一个针对多个框架的类库(例如net451,netcoreapp1.0).
既然官方项目格式正在csproj使用MSBuild,那么如何指定要定位的多个框架?我试图寻找这个在VS2017的项目设置,但我能只针对从.NET框架的核心在单一框架(它甚至没有列出我的其他完整的.NET框架版本都已经安装) :
Microsoft 最近宣布.Net 6.0 作为主要版本。我没有找到任何可以在 .net 6.0 项目中使用较旧的 .NET 框架(> 4.7.*)引用的参考?
比如说,.NET 6 项目将为 Windows 应用程序提供 .NET Framework 4.7.1 的 dll 引用?
TL; DR:
鉴于:我编写了一个具有相对便携功能的库(例如Left.Pad.©.dll).我想通过NuGet提供它.
要求:如果有人想用我的库中的任何版本的任何平台上的任何版本的任何操作系统的任何在编写代码的更新安装任何 IDE或任何代码编辑器,他们应该能够做到这一点.
问:什么是最低组的NuGet 目标框架,以实现这一目标?
奖金问题:如果存在任何不应该被定位的"死"框架,或者在选择目标框架时应该考虑的其他内容,您也可以提及它.
思想(旧版):
NuGet包支持多个.NET Framework版本和配置文件,例如,包可以提供net20,net30,net35,net40,net45,sl3,sl4,sl5等版本.但是,假设包的功能并不总是存在差异提供大量版本会浪费构建时间和封装大小,并导致不必要的复杂性.另一方面,提供仅支持最低支持的Framework版本的软件包可能会导致功能丢失,例如.NET 4支持多个CLR版本的进程内并行执行,但以前的版本不支持,因此此功能如果只提供.NET 3.5的版本(我不确定;我从未使用它并且不知道细节),将会丢失.如果提供PCL版本,逻辑很简单我假设:只是排除PCL涵盖的版本.
我正在将NuGet上的一个小型库移植到.NET Core.
我为主项目和测试创建了.NET Standard 1.6类库,并复制了代码.我更改了单元测试以使用XUnit属性和断言而不是NUnit.
除此之外,我几乎遵循文档中的说明,因此我添加了以下NuGet包:
唉,(1)Test Explorer没有找到我的单元测试,(2)当我运行时dotnet test,我得到以下内容:
开始测试执行,请稍候...无法找到testhost.dll for source'[...].Tests.dll'.确保测试项目具有包"microsoft.testplatform.testhost"的nuget引用.
我实际上已经添加了建议的Microsoft.TestPlatform.TestHostNuGet包,但是没有改变任何东西.
那么这里的问题是什么?
我正在使用VS2017.不是说我觉得它有所作为.
更新:更改测试项目Class Library (.NET Standard)以Class Library (.NET Core)解决问题.我仍然不明白为什么这应该有所作为.
我刚刚创建了一个新项目dotnet new web.我的Google-foo可能会让我失望,但我没有找到任何与我的答案相关的内容(请链接到另一个SO答案,或相关文档,如果我错过了一些明显的东西).
如果我想确保这个新项目符合.NET Standard 2.0,我现在该怎么办?