Typemock揭示 安装其它三方软件可能引起冲突,那试试不安装直接引用它的DLL

这两天一直在搞typemock的问题,我的同事们都装的最新版7.3 没有问题,只有我老出现下面这个问题。


Exception rethrown at [0]:
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at Typemock.Common.Core.ITestRunnerService.Initialize()
   at Typemock.Common.Core.ChannelRunnerFactory.InitializeServiceWhenReadyTask(ITestRunnerService testRunnerService)
   at Typemock.Common.Core.ChannelRunnerFactory.<>c__DisplayClass4.<InitializeServiceWhenReady>b__3()
   at Typemock.Common.Core.ActionRunner.RunActionAndLogErrors(Action action, String errorText, Action onCatch)
TestRunner Error: Initialize Test Runner Service
System.ServiceModel.CommunicationException: There was an error reading from the pipe: Unrecognized error 109 (0x6d). ---> System.IO.PipeException: There was an error reading from the pipe: Unrecognized error 109 (0x6d).
   at System.ServiceModel.Channels.PipeConnection.FinishSyncRead(Boolean traceExceptionsAsErrors)
   at System.ServiceModel.Channels.PipeConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
   --- End of inner exception stack trace ---

Server stack trace:
   at System.ServiceModel.Channels.PipeConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
   at System.ServiceModel.Channels.DelegatingConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
   at System.ServiceModel.Channels.SessionConnectionReader.Receive(TimeSpan timeout)
   at System.ServiceModel.Channels.SynchronizedMessageSource.Receive(TimeSpan timeout)
   at System.ServiceModel.Channels.TransportDuplexSessionChannel.Receive(TimeSpan timeout)
   at System.ServiceModel.Channels.TransportDuplexSessionChannel.TryReceive(TimeSpan timeout, Message& message)
   at System.ServiceModel.Dispatcher.DuplexChannelBinder.Request(Message message, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]:
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at Typemock.Common.Core.ITestRunnerService.Initialize()
   at Typemock.Common.Core.ChannelRunnerFactory.InitializeServiceWhenReadyTask(ITestRunnerService testRunnerService)
   at Typemock.Common.Core.ChannelRunnerFactory.<>c__DisplayClass4.<InitializeServiceWhenReady>b__3()
   at Typemock.Common.Core.ActionRunner.RunActionAndLogErrors(Action action, String errorText, Action onCatch)

第一步:

找出问题所在,我试了试typemock7.1.2是没有问题的,所以问题定位在是typemock自己的问题而不是我的开发环境。

第二步:

冲突可能的地方。是不是和我的VS2012有冲突问题?是不是和我的VS2010 SP1有冲突问题?是不是和我的Windows update 有冲突问题(是这个问题的话就麻烦了)

当然按老套路,尝试卸载一个个有可能冲突的软件

I have tried to uninstall VS2012 it's not working
then uninstall VS2010 SP1 not working
then repair  VS2010 not working
I guess it's the installation has made some confliect with my computer setting, therefore I tried the solution of copying components, it's finally works! which cost me 1 and half day working hour to find the work around solution.

Solved it by copying the installed whole componnent folder 7.3 from others computer instead of installing

最好只好出绝招,不用它提供的安装包而是直接手动拷贝其它开发人员安装好的DLL库,成功了!!!

基本功能都可以用了,testcase也都过了,但是代价是很多安装时提供给Visual Studio的插件功能不能使用,坐等新版本出来fix这个问题吧。

总结:

从这个实践中我觉得有两点可以学习的,

1. 如果第三方软件安装后有问题,又得不到厂商马上的帮助,可以尝试不安装而只用拷贝的方式。因为一般软件设计都会考虑,直接拷贝可以使用。

2. 不一定要得到完美的解决方案,只要暂时不影响你的工作就好了,因为有些功能其实你八辈子都用不到,新版本出来,完美的方案也就出来了--安装新版本 :)

3. 不要同一天一直纠结于一个问题的解决方案,回家休息好,睡一觉起来,好的方法就出来了!(本文解决方案就是睡觉,第二天早上,灵光一闪出来的)

原文地址:https://www.cnblogs.com/michael703/p/3011998.html