在 VS2017 中调试 Razor class 库时,“#”符号不能在 csproj/sln 路径名中

"#" sign cannot be in csproj/sln pathname when debugging Razor class library in VS2017

在学习 Razor class 库 (RCL) 功能期间,我发现了一个非常奇怪的错误,我花了几个小时才确定。尝试调试项目时,我无法 # 登录路径名。

重现步骤:

  1. 将存储库 git@github.com:zoka-cz/CSharpDirNameProblem.git 克隆到您想要的任何目录(迭代 1 - 确保 # 不在路径名中的任何位置,如 c:\tmp\CSharpDirNameProblem\ | 迭代 2 - 确保 #在目录名称中,例如 c:\tmp\C#\CSharpDirNameProblem\)
  2. 打开解决方案src\CSharpDirNameProblem.sln(我有VS2017,不知道其他版本)
  3. 设置WebApplication1作为启动项目和运行。
  4. 在打开的浏览器中单击 About 页面并观察不同的结果。
  5. 从第一个点开始进行第二次迭代,否则结束。

提到的存储库是重现问题的最小设置。首先,它是用很少的剃刀视图创建的 RCL 项目。然后创建 WebApplication(MVC Web 应用程序)项目,添加 RCL 作为参考,更改 About 页面以测试 RCL 项目视图。很简单的。 但是,当我的项目路径中有 # 符号时,它无法从 RCL 中找到视图。 Web 应用程序工作,但它没有找到 RCL 视图。您可以想象我花了多少时间来寻找问题。现在我知道我不能在名称中包含 #,但我想知道为什么,以及是否可以解决这个问题(我的很多项目都位于我的 ...Projects\C# 目录中)。

有谁知道是什么导致了这个问题?是 IIS Express 吗?是Visual studio吗?是 AspNetCore 的问题吗?我能以某种方式单独修复它吗?我可以自己找到问题的根源吗?或者在某处举报?

首先,这个问题是合法的,我能够使用 Visual Studio 2019 和 .net core 3.0.100 重现它。

我提出了一个 bug report on the AspNetCore 存储库(在此处引用您的问题),因为它看起来不像我们可以想出解决方法的东西。

好消息是它已经广为人知 issue,并且正在处理中。不太好的消息是它要等到 下一个主要版本 .

才能修复