我必须通过TFS 2010部署一个经典的ASP站点。该站点有许多自定义VB 6.0 DLL,需要在部署过程中取消注册和重新注册。有没有办法做到这一点?这是我第一次通过TFS使用构建过程的经验,所以它有点新鲜。
答案 0 :(得分:0)
如果要使用团队构建执行自定义任务,可以将此类节点添加到TFSBuild.proj文件中。要注册DLL,您可以这样做:
<Target Name="AfterGet">
<Exec Command="echo SolutionRoot=$(SolutionRoot)" />
<Exec Command="regsvr32 /s $(SolutionRoot)\SharedBinaries\STServer.dll" />
</Target>
要访问TFSBuild.proj文件,您可以转到源代码管理器,然后转到TeamBuildTypes文件夹下,您应该看到您的构建名称。单击它,在右侧窗格中,您将看到TFSBuild.proj文件(请参见下面的屏幕截图)。
答案 1 :(得分:0)
好吧,我解决了这个问题,尽管不完全是在TFS构建过程中。我正在做的是,在构建过程完成后,我运行一个MS Deploy脚本,该脚本将TFS发布的文件复制到远程服务器。然后,在部署文件之后,我调用另一个运行已添加到项目的VBScript文件的msdeploy命令。 VBScript代码循环遍历项目并重新注册它找到的所有DLL。
以下是批处理文件中调用的MS Deploy脚本:
msdeploy -verb:sync -source:contentpath=C:\temp\Build\_PublishedWebsites\TestSite -dest:contentPath=D:\Inetpub\wwwroot\TestSite,computername=RemoteSystem:1111
msdeploy -verb:sync -source:runcommand="D:\Inetpub\wwwroot\TestSite\RegisterFiles.vbs",waitinterval=10000 -dest:auto,computername=RemoteSystem:1111
最后,注册DLL的VBScript文件:
Set oShell = CreateObject ("WScript.Shell")
Dim FSO, FLD, FIL
Dim strFolder, strPath
strFolder = "D:\Inetpub\wwwroot\TestSite\DLLs\"
'Create the filesystem and folder objects
Set FSO = CreateObject("Scripting.FileSystemObject")
set FLD = FSO.GetFolder(strFolder)
'Loop through the DLLs in the folder
For Each Fil In FLD.Files
If Instr(Fil.Name,".dll") Then
strPath = strFolder & Fil.Name
oShell.Run "regsvr32 /s /u " & strPath
oShell.Run "regsvr32 /s " & strPath
End If
Next
If isObject(oShell) Then
Set oShell = Nothing
End IF
Set FLD = Nothing
Set FSO = Nothing