为什么在面向 .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
方面的专家,但对我来说,事情看起来不一致 - 我不知道问题出在哪里。
- 第一个
project.json
:如果我支持net46
,为什么要导入net452
?
- 在第二个
project.json
中:如果我使用 netstandard1.3
,为什么对版本 1.6
中的库有依赖性?
- 最后,什么是
.NETPortable, Version=v5.0
? .NET Core
的重命名已于今年年初进行 - 为什么我们仍然引用版本 5.0
?即使 MSDN 也不知道 <TargetFrameworkVersion>5.0</TargetFrameworkVersion>
中指定的 csproj
对我来说,这似乎 netstandard
不仅与可用的库有关,而且似乎还涉及工具。但这并不能解释为什么它适用于 dnxcore50
.
您需要 Diagnostics.Tools
和 Resources.ResourceManager
。
我通过安装 pre 版本来实现这个功能(虽然对于 .NET Standard 1.4),此时:
- "System.Diagnostics.Tools": "4.3.0-preview1-24530-04"
- "System.Resources.ResourceManager": "4.3.0-preview1-24530-04"
(问题副标题:.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
方面的专家,但对我来说,事情看起来不一致 - 我不知道问题出在哪里。
- 第一个
project.json
:如果我支持net46
,为什么要导入net452
? - 在第二个
project.json
中:如果我使用netstandard1.3
,为什么对版本1.6
中的库有依赖性? - 最后,什么是
.NETPortable, Version=v5.0
?.NET Core
的重命名已于今年年初进行 - 为什么我们仍然引用版本5.0
?即使 MSDN 也不知道<TargetFrameworkVersion>5.0</TargetFrameworkVersion>
中指定的csproj
对我来说,这似乎 netstandard
不仅与可用的库有关,而且似乎还涉及工具。但这并不能解释为什么它适用于 dnxcore50
.
您需要 Diagnostics.Tools
和 Resources.ResourceManager
。
我通过安装 pre 版本来实现这个功能(虽然对于 .NET Standard 1.4),此时:
- "System.Diagnostics.Tools": "4.3.0-preview1-24530-04"
- "System.Resources.ResourceManager": "4.3.0-preview1-24530-04"