【问题标题】:Why does adding an "imports" to project.json break this?为什么向 project.json 添加“导入”会破坏这一点?
【发布时间】: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


    【解决方案1】:

    我相信您需要以portable-win8+wpa81+wp8+net45 等形式导入。而不是您所阐明的完整 TFM。它还需要一个数组,因此您可以指定多个。

    此外,虽然 csproj + project.json “应该”在 VS 2015 中工作,但可能存在错误....无法修复。

    我强烈建议使用最新的 VS 2017 RC 并创建一个新的 .NET 标准类库。然后您可以使用 <PackageTargetFallback> 指定您需要的后备 TFM(由 ; 分隔)

    【讨论】:

    • 嗯。这种方法几乎与您在oren.codes/2016/07/09/using-xamarin-forms-with-net-standard 中描述的完全一样,我认为您在编写它时正在恢复。
    • VS 2017 RC 吸引了我,但是 (1) 发行说明说安装它会破坏 VS 2015 上的 Xamarin,并且 (2) 我需要新的 csproj/PackageReference 东西才能在 Visual Studio 中工作对于 Mac,因为我们在那里有团队成员。
    • 啊哈!我想我通过梳理上面提到的那个博客条目找到了问题所在。我没有安装 .NET Core。在我安装 .NET Core 1.0.1 VS 2015 工具预览 2 后,构建工作正常。
    • 是的,可以!
    • 对于我们让您跳过的所有这些障碍,我深表歉意。我正在尝试在 .NET Core/.NET Standard 2.0 的工具更新中解决此问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    • 2017-02-02
    • 1970-01-01
    • 2011-11-19
    相关资源
    最近更新 更多