使用Revit 2020时,Path.GetTempPath()方法最后返回带有GUID的UserTempPath

时间:2019-07-11 07:44:00

标签: c# .net revit .net-4.7.2

大多数使用我的加载项的应用程序返回“ 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 个答案:

答案 0 :(得分:5)

根据this forum linkRevit 2020会根据您看到的内容更改返回的值。

  

从Revit 2020开始,所请求的临时路径包含附加的guid   在路径的末尾,每次Revit重新启动后都会更改(即   C:\ Users \ USERNAME \ AppData \ Local \ Temp \ 84ae8c0d-197b-4b44-b8d3-8823fabbba4f)。   看来Revit更改了范围的临时路径   应用。

答案 1 :(得分:1)

我做了一个小修正,将路径用'\'分隔,并组成了一个字符串,直到单词'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);
        }

答案 2 :(得分:0)

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