我在使用 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 errorCode, String maybeFullPath) 在 Microsoft.Web.Deployment.FileStreamEx.CreateInstance(String path, FileMode fileMode, FileAccess fileAccess) 在 Microsoft.Web.Deployment.FilePathProvider。
在 Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable, ContentRootTable contentRootTable) 在 Microsoft.Web.Deployment.DeploymentAgent.HandleSync(DeploymentAgentWorkerR equest workerRequest) --- 内部异常堆栈跟踪结束 -- - 在 Microsoft.Web.Deployment.StatusThreadHandler.CheckForException() 在 Microsoft.Web.Deployment.AgentClientProvider.RemoteDestSync(DeploymentObject sourceObject, DeploymentSyncContext syncContext) 在 Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable , ContentRootTable contentRootTable) 在 Microsoft.Web.Deployment.DeploymentObject.SyncTo(DeploymentProviderOptions providerOptions,在 MSDeploy.MSDeploy.ExecuteWorker() 处的 DeploymentBaseOptions baseOptions、DeploymentSyncOptions syncOptions) 错误计数:1.*
如果我在 DESTINATIONSERVER 上执行IISRESET,则不会发生错误!
我的问题是:
是否可以在不执行 IISRESET 命令的情况下解锁 DLL?
我想我可以避免重新启动整个 Web 服务器。
你能帮助我吗'
非常感谢!
此致。