我是.net核心新手。 我需要一些帮助来配置我的project.json文件来创建一个带.net核心的类库。我实际上阅读了很多文档,但是因为有大量的东西要读,所以我迷失了。 我知道我必须使用NETStandardLibray(https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md),但我不知道如何将它放在我的config.json文件中。
这是我的config.json文件:
{
"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0-rc2-3002702"
},
"xunit": "2.1.0",
"dotnet-test-xunit": "1.0.0-rc2-build10025"
},
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dnxcore50",
"portable-net45+win8"
]
}
},
"testRunner": "xunit"
}
我想构建一个简单的类库,以便在另一个项目中重用,我也希望它能进行单元测试。
我的主要困难在于monikers。他们真是一团糟。我只是想构建一个可以在任何平台上使用的类库,但看起来我必须在我的project.json中选择平台。在已弃用的标记列表中,我不知道我应该使用什么名字。为了使用NET标准库,我应该将具有nuget标识符netcoreapp1.0的平台.NET Standard Application 1.5作为目标,还是应该使用具有nuget标识符netstandard1.3的平台.NET Platform 5.0?什么是正确的平台? NETStandard Library不应该与平台无关吗?我应该将这些标识符放在我的project.json的依赖项或框架部分中吗?那两个部分的区别是什么?我完全迷失了:(
答案 0 :(得分:5)
你的类库本身应该有netstandard1.3
或你想要的任何版本的框架 - 例如,Noda Time的目标是netstandard1.3
,因为我发现{{1}不幸的是,我通常会选择你最自信的最低版本。你不想要netstandard1.0
等,因为你正在编写一个库,而不是一个应用程序。
您的单元测试应该在一个单独的项目中,按照xUnit documentation进行配置 - 例如,定位netcoreapp1.0
,也许netcoreapp1.0
也可以在桌面框架上运行。
要回答您的其他问题,虽然.NET标准库与平台无关(就操作系统而言),您仍然需要表达您所依赖的版本 - 如果您需要仅在net451
中的内容,例如,您无法定位netstandard1.5
。
关于在依赖项部分中包含netstandard1.3
等的部分是(据我所知),以避免必须以模块化方式单独指定每个依赖项。这是一种简单的入门方式,但您可能稍后想要更具体,trimming your dependencies to only those you need。
肯定还有很多东西还在播出,还有很多文档要写,还有很多现在已经过时的文档和过去几年的博客文章...但是进展正在进行中制成。