Я пишу сценарий PowerShell v5 для запуска нашего автоматизированного процесса сборки на основе NAnt. У меня также есть пользовательская задача (GetLatestFromLabel), написанная на C#. Когда я запускаю сборку в командном окне DOS, сборка завершается успешно, однако, когда я запускаю процесс сборки из моего сценария PowerShell v5, он, кажется, добавляет локальный путь к файлу Windows в местоположение исходного кода TFS.Как «получить последнюю от метки» при использовании Nant с PowerShell?
C:\Windows\sysWOW64\WindowsPowerShell\v1.0\$\AHLTAPrint\AWP 2.x.
Здесь ошибка я получаю:
SourceControl.GetLatestFromLabel:
[echo] NewFolderVersion = 2.0.0.2
BUILD FAILED
INTERNAL ERROR
Microsoft.TeamFoundation.VersionControl.Client.ItemNotMappedException: There is no working folder mapping for C:\Windows\sysWOW64\WindowsPowerShell\v1.0\$\AHLTAPrint\AWP 2.x.
at Microsoft.TeamFoundation.VersionControl.Client.Client.GetLocalWorkspace(String localPath, Boolean throwIfNotFound)
at AHLTA.NAnt.TFS.Tasks.GetFromLabelTask.ExecuteTask() in c:\Workspaces\Ahltaprint\Build\NAnt.Extensions.Extended\AHLTA.NAnt.TFS.Tasks\Tasks\GetFromLabelTask.cs:line 66
at NAnt.Core.Task.Execute()
at NAnt.Core.Target.Execute()
at NAnt.Core.Project.Execute(String targetName, Boolean forceDependencies)
at NAnt.Core.Task.Execute()
at NAnt.Core.Target.Execute()
at NAnt.Core.Project.Execute(String targetName, Boolean forceDependencies)
at NAnt.Core.Project.Execute()
at NAnt.Core.Project.Run()
Вот мой NAnt Цель:
<target name="SourceControl.GetLatestFromLabel">
<property name="Private.SourceCodeFoldersfolders" value="$/AHLTAPrint/AWP 2.x" />
<property name="Private.SourceCodeFoldersDelimiter" value="|" />
<echo message="NewFolderVersion = ${NewFolderVersion}" />
<tfsgetfromlabel tfsfolders ="${Private.SourceCodeFoldersfolders}"
labelname="${NewFolderVersion}"
folderdelimiter="${Private.SourceCodeFoldersDelimiter}">
<connectioninformation refid="TFSConnection" />
</tfsgetfromlabel>
</target>
Это часть ExecuteTask из пользовательской задачи:
protected override void ExecuteTask()
{
VersionControlServer vcs = base.TheConnectionInformation.GetVersionControlServer();
if (vcs != null)
{
if (String.IsNullOrEmpty(TheFolderDelimiter))
{
/*** Only one folder ***/
if (!String.IsNullOrEmpty(TheTFSFolders))
{
LabelVersionSpec version = new LabelVersionSpec(TheLabelName);
Workspace ws = vcs.GetWorkspace(TheTFSFolders);
if (ws != null)
{
string[] items = { TheTFSFolders };
GetStatus gs = ws.Get(items, version, RecursionType.Full, GetOptions.Overwrite | GetOptions.GetAll);
}
}
}
else
{
// multiple folders in a string
string[] folders = TheTFSFolders.Split(TheFolderDelimiter.ToCharArray());
LabelVersionSpec version = new LabelVersionSpec(TheLabelName);
for (int i = 0; i < folders.Length; ++i)
{
if (!String.IsNullOrEmpty(folders[i]))
{
Workspace ws = vcs.GetWorkspace(folders[i]);
if (ws != null)
{
string[] items = { folders[i] };
Console.WriteLine("Getting Latest Code in " + items[0].ToString() + " From Label " + version.Label);
GetStatus gs = ws.Get(items, version, RecursionType.Full, GetOptions.Overwrite | GetOptions.GetAll);
}
}
}
}
}
}
Любая идея, что происходит или как я могу это исправить?
Beatcracker Спасибо за редактирование этого. Я попытался исправить это, но не знал, как и не мог видеть базовый код, окружающий его. – GhostHunterJim