簡體   English   中英

將Nant與PowerShell結合使用時,如何“從標簽獲取最新信息”?

[英]How to “Get Latest From Label” when using Nant with PowerShell?

我正在編寫一個PowerShell v5腳本來啟動我們基於NAnt的自動構建過程。 我也有一個用C#編寫的自定義任務(GetLatestFromLabel)。 當我在DOS命令窗口中運行構建時,構建成功完成,但是當我從PowerShell v5腳本運行構建過程時,它似乎是在本地Windows文件路徑之前添加了TFS源代碼位置。

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);
                    }
                }
            }
        }
    }
}

知道發生了什么或如何糾正這一點嗎?

通過在開始過程命令行中添加-workingdirectory參數來解決此問題。 正在從其他目錄調用腳本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM