首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自MSBuild的SharpSVN错误

来自MSBuild的SharpSVN错误
EN

Stack Overflow用户
提问于 2011-09-06 00:43:50
回答 1查看 462关注 0票数 2

我有以下代码,可以使用SharpSVN从Subversion中获取更改过的文件列表。

代码在单元测试中运行得很好,但在从MSBuild运行时会失败。单元测试和MSBuild都是使用相同的参数运行的(我已经通过调试两者检查过了),并且都是在同一个用户下运行的。错误异常在GetLog内部抛出(GetInfo成功,其他SVN方法在其他地方工作)。

有什么想法吗?

代码:

代码语言:javascript
复制
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);
    }
}

但有一个例外:

代码语言:javascript
复制
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: 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-06 23:17:04

我找到了解决方案,尽管它是针对我的情况的。

当我部署我的CustomTask时,我忘记了部署SharpSvn-SASL21-23-Win32.dll (当从单元测试运行时,它就在那里)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7310776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档