我有一个幻影/缓存的.dll,我无法在我的SP Farm中删除。我正在对Example.dll进行更新,其中包含我更改过的电子邮件事件接收器。重新部署到GAC并重新启动应用程序池根本不起作用。旧的dll仍在运行,尽管我竭尽全力追踪并更换它。
我知道SP Timer在内存中保存了一个版本。因此,经过数小时的阅读后,我尝试了以下内容(在服务器场中的所有服务器上):
IISRESET(通过cmd和IIS管理器) GAC部署(通过拖放和gacutil / f) 重置SPTimer(通过Services.msc和Powershell) 强制其他不相关的计时器作业运行 使用Process Explorer终止所有关联的进程 清除SP Config缓存 寻找C:\ Windows \ assembly \ temp(不存在) 最后,重新启动服务器
旧代码仍然运行!!到底是怎么回事?这个旧集会在哪里?我无法重新部署该功能,因为我的前任可能正在删除功能停用列表,它包含数千行代码,这些代码风险太大。请帮帮我!
答案 0 :(得分:1)
您必须撤消解决方案,重新启动计时器,再次部署。 确保dll来自同一解决方案。
修改这一行:
$解决方案名称= “的 yousolution.wsp 强>”
$ SolutionPath =“* H:* ”+ $ solutionName
试试这个电源shell脚本:
function WaitForJobToFinish([string]$SolutionFileName)
{
$JobName = "*solution-deployment*$SolutionFileName*"
$job = Get-SPTimerJob | ?{ $_.Name -like $JobName }
if ($job -eq $null)
{
Write-Host 'Timer job not found'
}
else
{
$JobFullName = $job.Name
Write-Host -NoNewLine "Waiting to finish job $JobFullName"
while ((Get-SPTimerJob $JobFullName) -ne $null)
{
Write-Host -NoNewLine .
Start-Sleep -Seconds 2
}
Write-Host "Finished waiting for job.."
}
}
Add-PsSnapin Microsoft.SharePoint.PowerShell
$CurrentDir=$args[0]
$solutionName="yousolution.wsp"
#$SolutionPath=$CurrentDir + "\"+$solutionName
$SolutionPath="H:\"+$solutionName
Write-Host 'Going to uninstall solution'
Uninstall-SPSolution -identity $solutionName -allwebapplications -confirm:$false
Write-Host 'Waiting for job to finish'
WaitForJobToFinish
Write-Host 'Going to remove solution'
Remove-SPSolution -identity $solutionName -confirm:$false
Write-Host 'Restarting OWS Timer jobs'
$farm = Get-SPFarm
$farm.TimerService.Instances | foreach {$_.Stop();$_.Start();}
$farm = Get-SPFarm
$farm.TimerService.Instances | foreach {$_.Stop();$_.Start();}
$farm = Get-SPFarm
$farm.TimerService.Instances | foreach {$_.Stop();$_.Start();}
$farm = Get-SPFarm
$farm.TimerService.Instances | foreach {$_.Stop();$_.Start();}
Write-Host 'Going to add solution'
Add-SPSolution $SolutionPath
Write-Host 'Going to install solution to all web applications'
Install-SPSolution -identity $solutionName -allwebapplications –GACDeployment -Force
Write-Host 'Waiting for job to finish'
WaitForJobToFinish
Remove-PsSnapin Microsoft.SharePoint.PowerShell
在这里找到你:C:\ Windows \ assembly并比较它是否已更新。