Ошибка SharpSVN от MSBuild - PullRequest
       3

Ошибка SharpSVN от MSBuild

2 голосов
/ 05 сентября 2011

У меня есть следующий код для получения списка измененных файлов из Subversion с использованием SharpSVN.

Код отлично работает из модульных тестов, но не работает при запуске из MSBuild. И модульный тест, и MSBuild выполняются с использованием одних и тех же параметров (я проверил отладку обоих) и выполняются под одним и тем же пользователем. Исключение ошибки возникает внутри GetLog, (GetInfo успешно, а другие методы SVN работают где-то еще).

Есть идеи?

Код:

public IEnumerable<string> GetChangedFiles(long revisionNumber)
{
    using (var client = new SvnClient())
    {
        SvnInfoEventArgs info;
        client.GetInfo(_workingCopyPath, out info);
        var lastRevision = info.LastChangeRevision;

        Collection<SvnLogEventArgs> logItems;
        var args = new SvnLogArgs();
        args.RetrieveChangedPaths = true;
        if (revisionNumber > lastRevision)
        {
            throw new ArgumentException(string.Format(
               "Revision number ({0}) is greater than last revision ({1})",
               revisionNumber, lastRevision));
        }

        args.Range = new SvnRevisionRange(revisionNumber, lastRevision);
        client.GetLog(_workingCopyPath, args, out logItems);
        return logItems.SelectMany(li => li.ChangedPaths).Select(cp => cp.Path);
    }
}

И исключение:

System.Runtime.InteropServices.SEHException was unhandled by user code
  Message=External component has thrown an exception.
  Source=SharpSvn
  ErrorCode=-2147467259
  StackTrace:
       at svn_client_log5(apr_array_header_t* , svn_opt_revision_t* , apr_array_header_t* , Int32 , Int32 , Int32 , Int32 , apr_array_header_t* , IntPtr , Void* , svn_client_ctx_t* , apr_pool_t* )
       at SharpSvn.SvnClient.InternalLog(ICollection`1 targets, Uri logRoot, SvnRevision altPegRev, SvnLogArgs args, EventHandler`1 logHandler)
       at SharpSvn.SvnClient.Log(String targetPath, SvnLogArgs args, EventHandler`1 logHandler)
       at SharpSvn.SvnClient.GetLog(String targetPath, SvnLogArgs args, Collection`1& logItems)
       at MSBuild.CustomTasks.SVN.Svn.GetChangedFiles(Int64 revisionNumber)
       at MSBuild.CustomTasks.SVN.SvnCopy.Execute()
       at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
       at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask, Boolean& taskResult)
  InnerException: 

1 Ответ

3 голосов
/ 06 сентября 2011

Я нашел решение, оно было довольно специфичным для моего случая.

Когда я развернул свой CustomTask, я забыл развернуть SharpSvn-SASL21-23-Win32.dll (он был там при запуске с устройстватест).

...