发布版本中路径中的非法字符,但不在调试模式下

时间:2017-07-25 14:32:57

标签: c# file mvvm path long-integer

enter image description here TL; DR为什么在运行调试模式时,我的应用程序可以正常工作,但在发布时却没有?

我正在使用MVVM加载文件路径来处理一些数据。当我使用调试器版本时,它会加载,验证并转换为正常,但是当我使用已发布/已发布的版本时,它会失败,因此我无法跟踪它发生的位置。需要注意的是,我们尝试使用长文件路径,因此我们将@" \\?\" 附件是我们的转换器。

    public static string CheckFilePath(string filePath)
    {
        //Network Location
        if (filePath.StartsWith(@"\\"))
        {
            filePath = filePath.TrimStart(@"\\".ToCharArray());
            return @"\\?\unc\" + filePath;
        }
        //Local location
        if (!filePath.StartsWith(@"\\?\") && (!filePath.StartsWith(@"\\") || !filePath.StartsWith(@"\\?\UNC\")))
        {
            return @"\\?\" + filePath;
        }
        return filePath;
    }

我们还使用4.6.2并使用它来尝试容纳长文件路径。请注意,这只是我的转换器,检查它是否有@" \\?\"或者@" \\"并将其替换为长路径所需的以下内容。这个转换器可能不是问题......任何帮助都会很棒!

1 个答案:

答案 0 :(得分:0)

好的,大家都感谢您的帮助,但我找到了解决方法。事实证明,我发布的版本与我的发布版本有点不一样,就像jdweng所说的那样。如果我只是从发布版本运行可执行文件它可以工作,但当我尝试通过发布安装它时,它不会。