我如何在通用 Windows 平台应用程序中更新一个特定的 dotnet 程序集?
How can i update one specific dotnet assembly in Universal Windows Platform app?
我读到 dotnet 是开源的,并且是通过 nuget 而不是整体安装程序通过粒度包分发的。
我创建了一个简单的 UWP 应用程序,我在里面看到的 project.json 是
{
"dependencies": {
"Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0"
},
"frameworks": {
"uap10.0": {}
},
"runtimes": {
"win10-arm": {},
"win10-arm-aot": {},
"win10-x86": {},
"win10-x86-aot": {},
"win10-x64": {},
"win10-x64-aot": {}
}
}
当我尝试通过 nuget 安装预发行版 System.Collections 时,我得到了关注
Version conflict detected for System.Private.Uri.
SM.W10 (≥ 1.0.0) -> System.Collections (≥ 4.0.11-beta-23516) -> System.Runtime (≥ 4.0.21-beta-23516) -> System.Private.Uri (≥ 4.0.1-beta-23516)
SM.W10 (≥ 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (≥ 5.0.0) -> Microsoft.NETCore.Runtime (≥ 1.0.0) -> Microsoft.NETCore.Runtime.CoreCLR-arm (≥ 1.0.0) -> System.Private.Uri (= 4.0.0).
我觉得我应该以某种方式展开 Microsoft.NETCore.UniversalWindowsPlatform
但它有很多层级的嵌套并且只有很深的嵌套 Microsoft.NETCore.Runtime.CoreCLR-arm
对 System.Private.Url
有严格的版本
有什么方法可以轻松更新 System.Collections 吗?
由于 System.Runtime
或 System.Collections
等包与 .NETNative 工具链之间存在一些私有依赖关系,因此 UWP 应用程序的第一个版本固定了所有核心包。因此,要测试任何最低级别合约的新版本,您还需要更新 运行time 包。
例如
"dependencies": {
"Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0"
"Microsoft.NETCore.Runtime": "1.0.1-beta-23516",
"System.Collections" : "4.0.11-beta-23516"
}
对于我们堆栈最底部的包,您只会 运行 进入这种行为,特别是
System.Collections,
System.Diagnostics.Contracts,
System.Diagnostics.Debug,
System.Diagnostics.StackTrace,
System.Diagnostics.Tools,
System.Diagnostics.Tracing,
System.Globalization,
System.Globalization.Calendars,
System.IO,
System.ObjectModel,
System.Reflection,
System.Reflection.Extensions,
System.Reflection.Primitives,
System.Resources.ResourceManager,
System.Runtime,
System.Runtime.Extensions,
System.Runtime.Handles,
System.Runtime.InteropServices,
System.Text.Encoding,
System.Text.Encoding.Extensions,
System.Threading,
System.Threading.Tasks,
System.Threading.Timer
UWP 的未来版本不会有同样的问题。我们发现使用 NuGet 来尝试强制私有依赖项是脆弱的,并且会产生令人困惑的错误。
我读到 dotnet 是开源的,并且是通过 nuget 而不是整体安装程序通过粒度包分发的。
我创建了一个简单的 UWP 应用程序,我在里面看到的 project.json 是
{
"dependencies": {
"Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0"
},
"frameworks": {
"uap10.0": {}
},
"runtimes": {
"win10-arm": {},
"win10-arm-aot": {},
"win10-x86": {},
"win10-x86-aot": {},
"win10-x64": {},
"win10-x64-aot": {}
}
}
当我尝试通过 nuget 安装预发行版 System.Collections 时,我得到了关注
Version conflict detected for System.Private.Uri.
SM.W10 (≥ 1.0.0) -> System.Collections (≥ 4.0.11-beta-23516) -> System.Runtime (≥ 4.0.21-beta-23516) -> System.Private.Uri (≥ 4.0.1-beta-23516)
SM.W10 (≥ 1.0.0) -> Microsoft.NETCore.UniversalWindowsPlatform (≥ 5.0.0) -> Microsoft.NETCore.Runtime (≥ 1.0.0) -> Microsoft.NETCore.Runtime.CoreCLR-arm (≥ 1.0.0) -> System.Private.Uri (= 4.0.0).
我觉得我应该以某种方式展开 Microsoft.NETCore.UniversalWindowsPlatform
但它有很多层级的嵌套并且只有很深的嵌套 Microsoft.NETCore.Runtime.CoreCLR-arm
对 System.Private.Url
有什么方法可以轻松更新 System.Collections 吗?
由于 System.Runtime
或 System.Collections
等包与 .NETNative 工具链之间存在一些私有依赖关系,因此 UWP 应用程序的第一个版本固定了所有核心包。因此,要测试任何最低级别合约的新版本,您还需要更新 运行time 包。
例如
"dependencies": {
"Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0"
"Microsoft.NETCore.Runtime": "1.0.1-beta-23516",
"System.Collections" : "4.0.11-beta-23516"
}
对于我们堆栈最底部的包,您只会 运行 进入这种行为,特别是
System.Collections,
System.Diagnostics.Contracts,
System.Diagnostics.Debug,
System.Diagnostics.StackTrace,
System.Diagnostics.Tools,
System.Diagnostics.Tracing,
System.Globalization,
System.Globalization.Calendars,
System.IO,
System.ObjectModel,
System.Reflection,
System.Reflection.Extensions,
System.Reflection.Primitives,
System.Resources.ResourceManager,
System.Runtime,
System.Runtime.Extensions,
System.Runtime.Handles,
System.Runtime.InteropServices,
System.Text.Encoding,
System.Text.Encoding.Extensions,
System.Threading,
System.Threading.Tasks,
System.Threading.Timer
UWP 的未来版本不会有同样的问题。我们发现使用 NuGet 来尝试强制私有依赖项是脆弱的,并且会产生令人困惑的错误。