1

我正在尝试使用NuGetter在 tfs.VisualStudio.com 上的托管构建服务器中创建 NuGet 包。我的理解是,一旦该工具尝试创建一个新文件夹以用作打包过程的舞台,它就会失败。这是我得到的错误:

Exception Message: Access to the path '$/main/Drops/MyBuild/MyBuild_20130128.4\NuGetPackage' is denied. (type UnauthorizedAccessException)
Exception Stack Trace:    
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj, Boolean checkHost)
at System.IO.Directory.InternalCreateDirectoryHelper(String path, Boolean checkHost)
at TfsBuild.NuGetter.Activities.CreateFolder.Execute(CodeActivityContext context) in c:\Users\svc-tauintbuilder\Downloads\Source\TfsBuild.NuGetter.Activities\CreateFolder.cs:line 53   
at System.Activities.CodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager)
at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)

该项目是开源的,所以我查看了该区域的代码,它确实只是一个简单的调用Directory.CreateDirectory

public string DoCreateFolder(string dropLocation, string folderName)
{
    string folderToCreate;

    if (Path.IsPathRooted(folderName))
    {
        folderToCreate = folderName;
    }
    else
    {
        folderToCreate = Path.Combine(dropLocation, folderName);
    }

    if (!Directory.Exists(folderToCreate))
    {
        Directory.CreateDirectory(folderToCreate);
    }

    return folderToCreate;
}

谈到 TFS,无论是否托管,我都是新手。我能做些什么来解决这个问题吗?

4

1 回答 1

0

我注意到错误中的方法签名和文件路径 ($/main/Drops...) 我猜这可以使用本地 TFS 重现,您可以在其中配置要归档到源代码控制的构建。Directory 类不会理解 $/ 所指的内容。似乎它需要传递 BinariesRoot 或类似的,然后让 TFS 拿起所有东西并签入。

于 2013-01-30T01:47:51.327 回答