尽管路径合法,但OpenSolutionAsync会因“路径中包含非法字符”而崩溃

时间:2020-01-29 14:33:18

标签: path roslyn roslyn-code-analysis

我正在尝试使用

打开C#解决方案文件
    Solution solutionToAnalyze = buildWorkspace.OpenSolutionAsync(pathSolution).Result;

我收到一条消息,提示我路径中包含非法字符。

如果我写了控制台的路径,它将显示

C:\ AppsDemo \ CSharp \ Duplicates \ Duplicates.sln

,我看不到任何非法字符。对我来说很好。

完整的调试信息是这样的:

    This exception was originally thrown at this call stack:
    System.IO.Path.LegacyNormalizePath(string, bool, int, bool)
    System.IO.Path.NormalizePath(string, bool, int, bool)
    System.IO.Path.GetFullPathInternal(string)
    Microsoft.CodeAnalysis.MSBuild.ProjectFile.GetAbsolutePath(string)
    Microsoft.CodeAnalysis.MSBuild.ProjectFile.GetOutputDirectory()
    Microsoft.CodeAnalysis.CSharp.CSharpProjectFileLoader.CSharpProjectFile.CSharpCompilerInputs.CSharpCompilerInputs(Microsoft.CodeAnalysis.CSharp.CSharpProjectFileLoader.CSharpProjectFile)
    Microsoft.CodeAnalysis.CSharp.CSharpProjectFileLoader.CSharpProjectFile.GetProjectFileInfoAsync(System.Threading.CancellationToken)
    System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)
    System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)
    System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(System.Threading.Tasks.Task)
    ...
    [Call Stack Truncated]
Inner Exception 1:
ArgumentException: Illegal characters in path.

不幸的是,崩溃的方法是内部的,我无法干预或查看导致错误的原因。

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

您是否尝试过在路径前面加上“ @”? 像这样:@“ C:\ AppsDemo \ CSharp \ Duplicates \ Duplicates.sln” 这样您就不会用“ \”弄乱您的路径了。