Метод Path.GetTempPath () возвращает UserTempPath с GUID в конце при использовании Revit 2020 - PullRequest
4 голосов
/ 11 июля 2019

Большинство приложений, использующих мою надстройку, возвращают путь "C: \ Users \ [имя пользователя] \ AppData \ Local \ Temp \".Но одно приложение возвращает «C: \ Users \ [имя пользователя] \ AppData \ Local \ Temp \ 1affa5dd-2f26-4c96-9965-7a78f5c76321 \».В конце концов GUID меняется каждый раз, когда я запускаю приложение.

Приложение, из которого я запускаю надстройку, - Revit 2015-2020.Версии Revit 2015-2019 возвращают верный путь.Но Revit 2020 возвращает путь с GUID, добавленным в конце.Код остается прежним.

    public static string GetLocalFilePath(string sourceUri, string fileName, string extension)
    {
        string[] sasTokenSeparated = sourceUri.Split('?');
        string[] uriParts = sasTokenSeparated[0].Split('/');
        string documentId = uriParts[uriParts.Length - 2];
        documentId = documentId.Split('.')[0];
        string extensionWithDot = string.Empty;
        if (!extension.StartsWith("."))
        {
            extensionWithDot = "." + extension;
        }
        else
        {
            extensionWithDot = extension;
        }
        string localPath = Path.Combine(Path.GetTempPath(), documentId, fileName + fileExtension);
        return localPath;
    }

Я ожидаю путь "C: \ Users \ [имя пользователя] \ AppData \ Local \ Temp \"

Пока я на самом деле получаю путь, "C: \ Users \ [имя пользователя] \ AppData \ Local \ Temp \ 1affa5dd-2f26-4c96-9965-7a78f5c76321 \"

Ответы [ 3 ]

5 голосов
/ 11 июля 2019

Согласно этой ссылке на форуме , Revit 2020 изменяет значение, возвращаемое согласно тому, что вы видите.

Начиная с Revit 2020, запрашиваемый временный путь содержит дополнительный guid в конце пути, который меняется после каждого перезапуска Revit (т.е. C: \ Users \ USERNAME \ AppData \ Local \ Temp \ 84ae8c0d-197b-4b44-b8d3-8823fabbba4f). Кажется, что Revit меняет временный путь для области действия применение.

1 голос
/ 11 июля 2019

Я сделал небольшое исправление, которое разбивает Path по символу '\' и составляет строку до слова 'Temp', оно работает, но считает его концепцией .

private void concept()
        {
            string fullpath = Path.GetTempPath();
            string[] ph = fullpath.Split('\\');
            bool fix = false;
            string fixedpath = "";
            foreach (string word in ph)
            {

                if (fix == false)
                {
                    fixedpath = fixedpath + word + @"\";
                }
                if (word.ToLower().Equals("temp"))
                {
                    fix = true;
                }

            }
            MessageBox.Show(fixedpath);
        }
0 голосов
/ 11 июля 2019

Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData) + @ "\ AppData \ Local \ Temp \"

...