客户
iGame Channel = new ChannelFactory<iGame> ( new BasicHttpBinding ( BasicHttpSecurityMode . None ) , new EndpointAddress ( new Uri ( "http://localhost:58597/Game.svc" ) ) ) . CreateChannel ( );
public Task<SerializableDynamicObject> Client ( SerializableDynamicObject Packet )
{
return Task<SerializableDynamicObject> . Factory . FromAsync ( Channel . BeginConnection , Channel . EndConnection , Packet , null );
}
Run Code Online (Sandbox Code Playgroud)
合同
[OperationContract ( AsyncPattern = true )]
IAsyncResult BeginConnection ( SerializableDynamicObject Message , AsyncCallback Callback , object State );
SerializableDynamicObject EndConnection ( IAsyncResult …Run Code Online (Sandbox Code Playgroud) 我的Windows应用程序包含4个针对Windows 8.1的项目和几个测试项目:
"... App.Core"项目以前是Windows 8项目,该项目也针对.Net 4.5框架.但正因为如此,有一些无法使用的异步功能.
我们现在需要完全异步能力,并且该项目仅针对Windows8.1重新定位.
然而,这样做打破了"... App.Core.Tests"项目,这是一个.Net 4.5测试项目.它正在引用App.Core项目,现在引用已被破坏.
问题:有没有办法从Test项目中定位Windows 8.1项目(无需创建新的测试项目)?测试项目有相当多的测试,文件夹和nuget包引用,这将是转移到新项目的主要痛苦.
如果我现在尝试添加引用,我会得到令人讨厌的简洁"无法添加项目'MyProject.App.Core'的引用."
此外,重新定位App.Core项目意味着更新其他8.1项目的目标,并为每个项目重新安装每个nuget包.这就是为什么我宁愿用另一种方式解决这个问题......如果有的话.
.Net 4.5项目是否有一些限制能够引用Windows 8.1项目?或许我只是做错了什么.
更新
根据以下来自@PiLHA的评论,我添加了.NET 4.5.1作为目标.它将库类型从"Windows 8.1"更改为"Portable",但它打破了所有异步调用.
注意:我将Microsoft.Bcl v1.1.10,Microsoft.Bcl.Async v1.0.68和Microsoft.Bcl.Build v1.0.21作为nuget包添加到"MyProject.App.Core"项目中.