我开始将图层升级到Roll Up 7,而我们仍然在另一个打开TFS的环境中进行开发。我们说的是版本1850,当我完成时,我们是在1900年。所以我们的目标是将50个不同的签到合并到完成的RU7环境中。每个签入都可以包含许多不同的对象,每个对象都作为XPO存储在TFS中。
我的代码是90%的代码,但是在将文件复制到临时目录时会产生问题。当我查看临时目录时,文件不在那里,但不知怎的,他们可以被访问。
static void Job33(Args _args)
{
#File
SysVersionControlSystem sysVersionControlSystem = versioncontrol.parmSysVersionControlSystem();
SysVersionControlTmpItem contents;
SysVersionControlTmpChange change;
SysVersionControlTmpChange changes;
int i;
SysVersionControlTmpItem contentsAddition;
SysVersionControlTmpItem contentsItem;
str writePath;
Set permissionSet = new Set(Types::Class);
str fileName;
int n;
;
change = versioncontrol.getChangesHistory();
// BP deviation documented
changes.setTmp();
changes.checkRecord(false);
changes.setTmpData(change);
while select changes
order by changes.ChangeNumber asc
where changes.ChangeNumber > 1850
{
writePath = @'C:\TEMP\' + int2str(changes.ChangeNumber) + @'\';
contentsAddition = versioncontrol.getChangeNumberContents(changes.ChangeNumber);
n = 0;
while select contentsAddition
{
// HOW DOES THIS LINE ACCESS THE FILE BUT MY METHOD CAN NOT??
contentsAddition.viewFile();
//?????????????
// Write to appropriate directory
if(!WinAPI::pathExists(writePath))
WinAPI::createDirectory(writePath);
n++;
fileName = int2str(changes.ChangeNumber) + '_' + int2str(n) + '.xpo';
if (WinAPI::fileExists(contentsAddition.fileName(), false))
{
// Write to appropriate directory
if(!WinAPI::pathExists(writePath))
WinAPI::createDirectory(writePath);
WinAPI::copyFile(contentsAddition.fileName(), writePath + fileName, true);
info(strfmt("|%1|%2|", contentsAddition.fileName(), writePath + fileName));
}
}
info(strfmt("%1", changes.ChangeNumber));
}
}
答案 0 :(得分:1)
埋藏在Classes \ SysVersionControlFilebasedBackEndTfs中,有一个使用的.Net程序集。我能够使用它来提取我需要与上面的代码混合的东西。我用过这个之后......上面的代码开始工作得很奇怪了吗?
不知何故,我复制了TO的文件夹上有一个文件锁,只是在我关闭AX之前不允许我删除它...没什么大不了的,但它表明有一个tfsProxy.close()方法或者我应该称之为。
Microsoft.Dynamics.Morphx.TeamFoundationServer.Proxy tfsProxy = new Microsoft.Dynamics.Morphx.TeamFoundationServer.Proxy();
;
tfsProxy.DownloadFile(contentsAddition.InternalFilename, changes.ChangeNumber, writePath + fileName);
答案 1 :(得分:0)
因此,您试图获取已更改的对象,以便将其导入新的RU7环境中?为什么不直接在Visual Studio中执行此操作?您可以根据自RU7升级以来的变更集历史记录从那里拉出XPO。
此外,您应该使用分支。以这种方式分支新代码本来很容易。你应该考虑的未来。