我正在尝试使用.NET CoreMono.Options
在其命令行工具下使用。
最初,我尝试使用文件中的依赖项声明从NuGet加载它project.json
,但dotnet restore
抱怨该程序包与dnxcore50
框架不兼容。²
因此,我决定尝试从源代码构建它。我在Mono.Options
源代码中注意到它具有PCL
构建选项。考虑到PCL可能非常接近.NET Core,我尝试创建一个DLL项目以启用该设置来构建它:
{
"version": "0.0.0-d95ccb2ca5",
"compilationOptions": {
"emitEntryPoint": false,
"define": [ "PCL" ],
},
"dependencies": {
"NETStandard.Library": "1.0.0-rc2-23811"
},
"compile": [ "*.cs" ],
"frameworks": {
"dnxcore50": { }
}
}
然后,我Options.cs
将上面链接中的download下载副本放在同一目录中,并说dotnet build
,这会出现以下错误:
.../Mono/Options.cs(137,22): error CS0234: The
type or namespace name 'Serialization' does not exist in the namespace
'System.Runtime' (are you missing an assembly reference?)
.../Mono/Options.cs(729,27): error CS0246: The
type or namespace name 'KeyedCollection<,>' could not be found (are you
missing a using directive or an assembly reference?)
...加上其他所有归因于这两个关键错误的信息。
最终,我想到了我的问题:
为什么会System.Runtime.Serialization
丢失?根据文档,它应该是.NET Core的一部分。
后来我为编译器抱怨的两个名称空间的父包添加了显式依赖项:
...
"frameworks": {
"dotnet5.4": {
"dependencies": {
"System.ObjectModel": "4.0.*",
"System.Runtime": "4.1.0-rc2-23811"
}
}
}
dotnet restore
然后成功,并且大多数构建错误都消失了,但是第一个错误Serialization
仍然继续发生。.NET Core目前只是不完整吗?
除了等待类被移植以外,是否有其他解决方法?
我dnxcore50
在初始项目文件中使用过,因为这是dotnet new
生成它的方式。对这种变化dotnet5.4
似乎根据是必要的ASP.NET 5包的搜索引擎,但这种变化与犹太.NET核心?³
阿西德斯
为什么?因为是2016年,.NET仍然没有内置的命令行选项解析功能。rr 也许微软对Xamarin的收购将使其Mono.Options
包含在.NET Core中。同时...
Mono.Options
在问完此问题后发布的4.2.2.1解决了此兼容性问题。
ASP.NET 5程序包搜索结果表明,该搜索结果也netcore50
应出于我的目的而工作,但是随后我收到了投诉no run-time assembly compatible with osx.10.10-x64
。
这是在装有Mono 4.2.1的OS X 10.10计算机上发生的。Mono.Options
确实在此基础上建立。之所以出现此问题,是因为我试图将一些较简单的现有项目切换到这个新的,更轻便的运行时。
该System.Runtime.Serialization
机制有意从.NET Core中删除。(向下滚动至“二进制序列化”部分。)幸运的是,Mono.Options
在PCL模式下构建该接口时,实际上并没有使用该接口,因此解决方法很简单:将using System.Runtime.Serialization
行向下移动几行到#else
子句中,这样就不会看何时PCL
定义。
如果可能,请避免使用RC2。它仍在开发中,我在GitHub上看到了几个问题。
进入RC1后,您可以使用http://packagesearch.azurewebsites.net查找缺少的软件包及其针对RC1的版本。
最好是基于某个.NET平台标准而不是单个配置文件(例如RC1中的5.4(RC2中的1.3))构建。
至于您的附带问题,
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句