【发布时间】:2017-01-28 02:30:34
【问题描述】:
使用 Visual Studio 2015 更新 3,我创建了一个可移植类库。然后我将其切换到目标 .NET Standard。
所以 project.json 文件看起来基本上是这样的:
"dependencies": {
"Microsoft.NETCore.Portable.Compatibility": "1.0.1",
"NETStandard.Library": "1.6.1"
},
"frameworks": {
"netstandard1.3": {
}
}
在创建的 Class1.cs 中,我添加了一个简单的方法,它使用来自 Linq 的 Any() 方法:
static void foo()
{
var x = new string[] { "hello", "world", };
var q = x.Any(s => s.Contains("m"));
}
一切都很好。
现在,我希望这个库能够引用具有 PCL 配置文件的 nuget 包,即尚未更新到 netstandard 的包。我的理解是我需要在 project.json 文件的“框架”部分中使用“导入”部分。所以,我添加了这个:
"frameworks": {
"netstandard1.3": {
"imports": ".NETPortable,Version=v4.6,Profile=Profile151"
}
}
并且不做任何其他更改。
现在构建失败了:
错误 CS1061 'string[]' 不包含 'Any' 的定义,并且找不到接受第一个参数类型为 'string[]' 的扩展方法 'Any'(您是否缺少 using 指令或程序集参考?)
似乎只是说我们可以接受配置文件 151 PCL,构建丢失了 System.Linq。
更改为 netstandard 1.2 或 1.4 或 1.5 似乎没有任何区别。
将“imports”值更改为其他 PCL 配置文件似乎并不重要。
将“imports”值更改为其他形式,例如“portable-net45+win8+wp8+wpa81”,似乎无关紧要。
将“imports”值更改为“fubar”确实会导致有关无效框架的额外错误,正如人们所预料的那样。
有人知道为什么会这样吗?
【问题讨论】:
标签: c# .net-standard project.json