我为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.Build
和Microsoft.Bcl.Async
?
答案 0 :(得分:2)
问题是你的图书馆被编译为与Microsoft.Threading.Tasks
内的“某事”对话(实际上你可能需要包括Microsoft.Threading.Tasks
,Microsoft.Threading.Tasks.Extensions
和Microsoft.Threading.Tasks.Extensions.Desktop
你的部署)。如果您使用的是.NET 4.5,那么这3个DLL中的代码只需要将调用转发到.NET框架,如果您使用的是.NET 4.0,它会进行替换调用。
您编译的DLL的“Imports”(使用C术语)不会根据其运行时环境而改变。你的程序总是必须打电话给那个代理,代理在4.5系统上可能做的很少,但是呼叫仍然必须发生。