我的构建服务器突然停止工作。我检查日志文件后,我发现怪物的错误消息:MSBuild在解析COM参考时失败。为什么?
error MSB4018: The "ResolveComReference" task failed unexpectedly.
error MSB4018: System.ApplicationException: The directory name is invalid. (Exception from HRESULT: 0x8007010B)
error MSB4018:
error MSB4018: Server stack trace:
error MSB4018: at System.Reflection.Assembly.nDefineVersionInfoResource(String filename, String title, String iconFilename, String description, String copyright, String trademark, String company, String product, String productVersion, String fileVersion, Int32 lcid, Boolean isDll)
error MSB4018: at System.Reflection.Emit.AssemblyBuilder.SaveNoLock(String assemblyFileName, PortableExecutableKinds portableExecutableKind, ImageFileMachine imageFileMachine)
error MSB4018: at System.Reflection.Emit.AssemblyBuilder.Save(String assemblyFileName, PortableExecutableKinds portableExecutableKind, ImageFileMachine imageFileMachine)
error MSB4018: at Microsoft.Build.Tasks.TlbReference.WriteWrapperToDisk(AssemblyBuilder assemblyBuilder, String wrapperPath)
error MSB4018: at Microsoft.Build.Tasks.TlbReference.GenerateWrapper(ComReferenceWrapperInfo& wrapperInfo)
error MSB4018: at Microsoft.Build.Tasks.ResolveComReference.ResolveComReferenceTlb(ComReferenceInfo referenceInfo, StringoutputDirectory, String refName, Boolean topLevelRef, ComReferenceWrapperInfo& wrapperInfo)
error MSB4018: at Microsoft.Build.Tasks.ResolveComReference.ResolveComClassicReference(ComReferenceInfo referenceInfo, String outputDirectory, String wrapperType, String refName, Boolean topLevelRef, ComReferenceWrapperInfo& wrapperInfo)
error MSB4018: at Microsoft.Build.Tasks.ResolveComReference.Microsoft.Build.Tasks.IComReferenceResolver.ResolveComClassicReference(TYPELIBATTR typeLibAttr, String outputDirectory, String wrapperType, String refName, ComReferenceWrapperInfo& wrapperInfo)
error MSB4018: at Microsoft.Build.Tasks.ResolveComReference.ScanAndResolveAllDependencies(ComDependencyWalker dependencyWalker, ComReferenceInfo reference)
error MSB4018: at Microsoft.Build.Tasks.ResolveComReference.ResolveReference(ComDependencyWalker dependencyWalker, ComReferenceInfo referenceInfo, String outputDirectory, ITaskItem& referencePathItem)
error MSB4018: at Microsoft.Build.Tasks.ResolveComReference.ResolveReferenceAndAddToList(ComDependencyWalker dependencyWalker, ComReferenceInfo projectRefInfo, ArrayList resolvedReferenceList, ArrayList moduleList)
error MSB4018: at Microsoft.Build.Tasks.ResolveComReference.Execute()
error MSB4018: at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
error MSB4018: at System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(RuntimeMethodHandle md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
error MSB4018: at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)
error MSB4018:
error MSB4018: Exception rethrown at [0]:
error MSB4018: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
error MSB4018: at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
error MSB4018: at Microsoft.Build.Framework.ITask.Execute()
error MSB4018: at Microsoft.Build.BuildEngine.TaskEngine.ExecuteInstantiatedTask(EngineProxy engineProxy, ItemBucket bucket, TaskExecutionMode howToExecuteTask, ITask task, Boolean& taskResult)
所有的错误都是从c:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(1418,9)
。
很明显COM引用有一些问题。我试图重新注册所有这些,但我没有成功。
我怎样才能找到困扰的参考或至少我该如何诊断这个问题?
编辑:当我在本地构建应用程序并将其复制到它的工作原理服务器。所以只有构建需要的东西存在问题。
你有什么线索我怎么找到哪个目录名无效?我花了半个小时在注册表中挖掘,但我没有发现任何可疑的东西。 – 2010-08-30 13:13:55
它试图将COM互操作库写入磁盘时发生。不是注册表问题。 – 2010-08-30 13:24:24