多目标.NET程序集,用于在.NET 4.5和.NET 4上使用async/await。

3
我现在正在构建一个小型便携式库,需要使用async/await技术。 我的目标是希望能够在.NET 4和.NET 4.5运行时上使用我的库。理想情况下,我想在针对.NET 4时使用Microsoft.Bcl.Async包,在.NET 4.5上使用内置的async/await支持而不包括Bcl包。
即便如此,我还是希望将bcl.async.dll从我的项目中排除掉,因为这会导致在C# 5中内置的async 和bcl.async包之间存在引用歧义的警告。
这个可行吗?如果可以,怎么做?如果不行,有没有更好的解决办法?

你想在 .net 4.0 还是 .net 4.5 下编译库?你如何确定要运行哪个函数? - ilansch
你是说如果你有一个引用了Bcl.Async的PCL和一个引用了该库的.NET 4.5应用程序,你会收到警告? - svick
@ilansch:我希望将我的库编译为.NET 4.0和4.5两个版本。基本上,我想确保我的.NET 4.0版本包含并引用了bcl.async库,而.NET 4.5版本则不需要,因为该功能已经包含在框架中。 - Søren Engel
@svick:不是这样,我已经尝试将我的PCL设置为编译成.NET 4.0,同时引用了bcl.async库,但是当我编译成.NET 4.5时,编译器抱怨来自bcl.async库的async和框架本身的async两者都存在。 - Søren Engel
1
@SørenEngel:这是正常的,也是NuGet与PCL交互方式的不幸副作用。如果您更改了PCL目标,则应首先卸载所有NuGet包,然后更改目标,最后重新安装它们。我建议您只使用Microsoft.Bcl.Async以.NET 4.0为目标。 - Stephen Cleary
显示剩余5条评论
1个回答

4

我最终采用了@StephenCleary的答案,我的PCL针对.NET 4.0进行了定位,并使用了Bcl.Async包。

谢谢!


1
那么,如果你在安装了 .Net 4.5 的平台上运行,你会忽略它的优势,继续使用 4.0 + Bcl 支架吗? - SerG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接