Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么在VisualStudio和LinqPad中编译时,此代码的操作会有所不同?_C#_Io_Roslyn_Linqpad_Csharpcodeprovider - Fatal编程技术网

C# 为什么在VisualStudio和LinqPad中编译时,此代码的操作会有所不同?

C# 为什么在VisualStudio和LinqPad中编译时,此代码的操作会有所不同?,c#,io,roslyn,linqpad,csharpcodeprovider,C#,Io,Roslyn,Linqpad,Csharpcodeprovider,我正在编写一个需要创建很多文件夹的应用程序。我遇到了这个我无法理解的顽固错误我得到的是DirectoryNotFoundException,它在异常消息中说明了失败的确切字符串路径。我可以将该路径复制粘贴到文件浏览器栏中,它会直接将我带到那里。我的VisualStudio解决方案每次都会在这种情况下失败。我将文本复制粘贴到linqpad中以隔离它并找出它不喜欢的内容。在linqpad中,完全相同的代码可以正常工作。我变得很困惑。我在兔子洞里呆了一会儿,直到我意识到它不喜欢的只是文件夹末尾的空间。

我正在编写一个需要创建很多文件夹的应用程序。我遇到了这个我无法理解的顽固错误我得到的是DirectoryNotFoundException,它在异常消息中说明了失败的确切字符串路径。我可以将该路径复制粘贴到文件浏览器栏中,它会直接将我带到那里。我的VisualStudio解决方案每次都会在这种情况下失败。我将文本复制粘贴到linqpad中以隔离它并找出它不喜欢的内容。在linqpad中,完全相同的代码可以正常工作。我变得很困惑。我在兔子洞里呆了一会儿,直到我意识到它不喜欢的只是文件夹末尾的空间。解决问题,吸取教训。现在,我已经将它添加到我拥有的一些路径卫生功能中

我不明白的是为什么它在Linqpad中工作,但与Linqpad 5使用Roslyn的情况不同,它在那里工作。Linqpad 4使用CSharpCodeProvider,它在那里工作。Visual Studio使用CSC.exe,但在那里不起作用。我不知道这些有什么不同

有人能帮我理解为什么他们在这种情况下有所不同吗?我想知道我什么时候应该在林帕德参加考试(也许总是?)

在Visual Studio中运行时,以下代码在CreateDirectory中失败。在LinqPad 4或5中运行时会成功。 有关守则:

try
{
    string myDocsPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
    Directory.CreateDirectory(Path.Combine(myDocsPath, "SpaceOnTheEnd ", "NoSpaceOnTheEnd"));
    Console.WriteLine("Creation succeeded.");
}
catch (Exception ex)
{
    if (ex is DirectoryNotFoundException)
    {
        Console.WriteLine("Creation failed due to space.");
    }

    throw;
}

在LinqPad 5和Visual Studio 2015中,上面的代码对我来说都很好(创建了目录)。你会说,“我的VisualStudio解决方案每次都会在这样一行失败”。哪一行失败了,你有什么错误?@RufusL这在VS2019中对我来说失败了。消息:找不到路径“C:\Users\Nate的工作笔记本电脑\Documents\SpaceOnThind\NoSpaceOnThind”的一部分。StackTrace:System.IO.IO.Error.WinIOError(Int32 errorCode,String maybeFullPath)System.IO.Directory.InternalCreateDirectory(String fullPath,String path,Object dirSecurityObj,Boolean checkHost)System.IO.Directory.InternalCreateDirectoryHelper(String path,Boolean checkHost)System.IO.Directory.CreateDirectory(字符串路径)VS和目标框架的版本是什么?在VS2019.Net framework 4.7.2上,这会引发DirectoryNowFoundException。在VS2019.Net Core 2.0上,这可以按照@KolAI所述工作。我认为您遇到了与所述.Net路径处理更改相关的问题。另请参阅。上面的代码对我来说很好(目录已创建)在LinqPad 5和Visual Studio 2015中,您会说,“我的Visual Studio解决方案每次都会在这样一行失败”。哪一行出现故障,您得到的错误是什么?@RufusL这在VS2019中对我来说失败。消息:找不到路径“C:\Users\Nate's Work Laptop\Documents\SpaceOnThind\NoSpaceOnThind”的一部分。StackTrace:at System.IO.\uu error.WinIOError(Int32 errorCode,String maybeFullPath)位于System.IO.Directory.InternalCreateDirectory(字符串完整路径、字符串路径、对象dirSecurityObj、布尔检查主机)的System.IO.Directory.InternalCreateDirectoryHelper(字符串路径、布尔检查主机)的System.IO.Directory.CreateDirectory(字符串路径)VS和目标框架的版本是什么?在VS2019.Net framework 4.7.2上,这会引发DirectoryNowFoundException。在VS2019.Net Core 2.0上,这会按照@KolAI所述工作。我认为您遇到了与所述.Net路径处理更改相关的问题。另请参阅。