gpt4 book ai didi

.net - 为什么运行时需要 Microsoft.Threading.Tasks?

转载 作者:行者123 更新时间:2023-12-02 15:43:31 25 4
gpt4 key购买 nike

我向 Azure 部署了一个解决方案,发现 Microsoft.Threading.Tasks 丢失,并且应用程序无法加载。

我引用的项目之一我使用可移植东西

<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.Bcl" version="1.1.9" targetFramework="portable-net45+sl50+win+wp80" developmentDependency="true" />
<package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="portable-net45+sl50+win+wp80" developmentDependency="true" />
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="portable-net45+sl50+win+wp80" developmentDependency="true" />
<package id="Microsoft.Net.Http" version="2.2.22" targetFramework="portable-net45+sl50+win+wp80" developmentDependency="true" />
<package id="Newtonsoft.Json" version="6.0.3" targetFramework="portable-net45+sl50+win+wp80" />
</packages>

我将它们标记为developmentDependency,这样我的主项目就不包含这些可移植程序。我的印象是 .NET 4.5 应用程序不需要可移植包,因为它们已经应该位于 .NET 的核心中,并且仅在构建时才需要 BCL 内容。

我的假设是错误的吗?我是否仍应在 .NET 4.5 应用程序中包含 Microsoft.Bcl.BuildMicrosoft.Bcl.Async

最佳答案

问题是您的库被编译为与 Microsoft.Threading.Tasks 内的“某些东西”对话(实际上您可能需要包含 Microsoft.Threading.TasksMicrosoft.Threading.Tasks.ExtensionsMicrosoft.Threading.Tasks.Extensions.Desktop 在您的部署中)。如果您使用的是 .NET 4.5,这 3 个 DLL 中的代码只知道将调用转发到 NET 框架,如果您使用的是 .NET 4.0,它会执行替换调用。

编译的 DLL 的“导入”(使用 C 术语)不会根据其运行时环境而改变。您的程序始终必须调用该代理,代理在 4.5 系统上可能执行的操作很少,但调用仍然必须发生。

关于.net - 为什么运行时需要 Microsoft.Threading.Tasks?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24920952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com