为什么在面向 .netstandard 1.3 时不能使用嵌入式资源 (resx)?

Why can't I use embedded resources (resx) when targeting .netstandard 1.3?

(问题副标题:.netstandard 1.3 不支持资源还是我的项目文件搞砸了?)

我刚刚在 Visual Studio 2015 Update 3 中创建了一个示例可移植 class 库并添加了一个示例资源文件。最初,文件 project.json 看起来像这样:

{
  "supports": {
    "net46.app": {},
    "uwp.10.0.app": {},
    "dnxcore50.app": {}
  },
  "dependencies": {
    "Microsoft.NETCore": "5.0.0",
    "Microsoft.NETCore.Portable.Compatibility": "1.0.0"
  },
  "frameworks": {
    "dotnet": {
      "imports": "portable-net452+win81"
    }
  }
}

很好:没有编译错误!

之后,我使用项目属性来定位.NETStandard 1.3

现在 project.json 看起来像这样:

{
  "supports": {},
  "dependencies": {
    "Microsoft.NETCore.Portable.Compatibility": "1.0.1",
    "NETStandard.Library": "1.6.0"
  },
  "frameworks": {
    "netstandard1.3": {}
  }
}

现在我收到以下构建错误 - 这基本上意味着构建操作 EmbeddedRessource 不受支持:

我真的不是 project.json 方面的专家,但对我来说,事情看起来不一致 - 我不知道问题出在哪里。

对我来说,这似乎 netstandard 不仅与可用的库有关,而且似乎还涉及工具。但这并不能解释为什么它适用于 dnxcore50.

您需要 Diagnostics.ToolsResources.ResourceManager

我通过安装 pre 版本来实现这个功能(虽然对于 .NET Standard 1.4),此时:

  • "System.Diagnostics.Tools": "4.3.0-preview1-24530-04"
  • "System.Resources.ResourceManager": "4.3.0-preview1-24530-04"