【发布时间】:2010-10-01 04:53:20
【问题描述】:
我在使用 msdeploy 将 GAC 程序集同步到许多应用程序服务器时遇到了这个问题。
当我运行这个命令时
msdeploy -verb:sync -source:gacAssembly="'MyAssembly'" -dest:gacAssembly,computername=DESTINATIONSERVER
我收到此错误:
*Microsoft.Web.Deployment.DeploymentException:
(28/09/2010 16.46.37) 在远程计算机上处理请求时发生错误。
---> Microsoft.Web.Deployment.DeploymentClientServerException:处理“INPS.DNA.dll”时遇到错误。
---> Microsoft.Web.Deployment.DeploymentException:错误代码为 0x80070020。
---> System.IO.IOException: 该进程无法访问 'C:\Windows\assembly\GAC_MSIL\MYASSEMBLY\1.0.0.0__a31fe99d2f98435c\MYASSEMBLY.dll' 因为它正被另一个进程使用。
在 Microsoft.Web.Deployment.Win32Native.RaiseIOExceptionFromErrorCode(Win32ErrorCode 错误代码,字符串可能全路径)
在 Microsoft.Web.Deployment.FileStreamEx.CreateInstance(字符串路径、文件模式文件模式、文件访问文件访问)
在 Microsoft.Web.Deployment.FilePathProvider.Add(DeploymentObject 源,布尔假设)
--- 内部异常堆栈跟踪结束 ---
--- 内部异常堆栈跟踪结束 ---
在 Microsoft.Web.Deployment.DeploymentObject.Update(DeploymentObject 源,DeploymentSyncContext 同步上下文)
在 Microsoft.Web.Deployment.DeploymentSyncContext.HandleUpdate(DeploymentObject destObject,DeploymentObject sourceObject)
在 Microsoft.Web.Deployment.DeploymentSyncContext.SyncDirPathChildren(DeploymentObject destRoot,DeploymentObject sourceRoot)
在 Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenNoOrder(DeploymentObject 目标,DeploymentObject 源)
在 Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject 目标,DeploymentObject 源)
在 Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync(部署对象目标对象,部署对象源对象)
在 Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject
destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable, Conten
tRootTable contentRootTable)
在 Microsoft.Web.Deployment.DeploymentAgent.HandleSync(DeploymentAgentWorkerR
equest workerRequest)
--- 内部异常堆栈跟踪结束 ---
在 Microsoft.Web.Deployment.StatusThreadHandler.CheckForException()
在 Microsoft.Web.Deployment.AgentClientProvider.RemoteDestSync(DeploymentObje
ct sourceObject, DeploymentSyncContext syncContext)
在 Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject
destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable, Conten
tRootTable contentRootTable)
在 Microsoft.Web.Deployment.DeploymentObject.SyncTo(DeploymentProviderOptions
providerOptions、DeploymentBaseOptions baseOptions、DeploymentSyncOptions syncO
选项)
在 MSDeploy.MSDeploy.ExecuteWorker()
错误计数:1.*
如果我在 DESTINATIONSERVER 上执行 IISRESET,则不会发生错误!
我的问题是:
是否可以在不执行 IISRESET 命令的情况下解锁 DLL?
我想我可以避免重新启动整个 Web 服务器。
你能帮帮我吗?
非常感谢!
最好的问候。
【问题讨论】:
标签: gac msdeploy webdeploy iisreset