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 に答える