Visual Studio 2022(社区)升级在更新后丢失了项目中的所有RegexGenerator



我一直在Visual Studio 2022社区中开发一个小的Winforms项目。我已经用这些RegexGenerator"预编译"的Regex例程替换了静态Regex调用,它们都运行得很好。今天,我升级到了9月20日的VS-2022更新,当我重新加载我的项目时,所有的RegexGenerator引用现在都会生成错误:

CS0246:";未能找到类型或命名空间名称"RegexGeneratorAttribute"(是否缺少using指令或程序集引用?(">

CS0246:";未能找到类型或命名空间名称"RegexGenerator"(是否缺少using指令或程序集引用?(">

我在项目中找不到任何包含丢失代码的文件,我真的不想遍历整个项目并手动返回所有原始Regex检查。有人知道是否有办法让VS2022解决这个问题吗?或者,我可以做些什么让它重新创建它必须首先制作并随后丢失的文件吗?

在谷歌上搜索这个错误需要将RegexGeneratorAttribute放在引号中,并且生成零点击,所以我认为这是VS2022的新内容(在野外(?

显然,这是.NET7.0(不是CORE(还不够明显。

这是受影响的代码(所有代码都是由Visual Studio自动生成的(,现在每一行都有错误:

#region RegexGenerators
[RegexGenerator( @"(^[a-z][w]*:\/\/|:[d]+)", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant )]
private static partial Regex ServerRegex();
[RegexGenerator( @"[^0-9a-f]", RegexOptions.CultureInvariant )]
private static partial Regex SessionIdRegex();
[RegexGenerator( @"(\/\*|\*\/|Master Key|[0-9,]+ bits|[^a-zA-Z0-9+\/=])", RegexOptions.CultureInvariant )]
private static partial Regex PrivateKeyRegex();
[RegexGenerator( @"^[0-9a-fA-F]{18}$" )]
private static partial Regex ValidateRegex();
[RegexGenerator( @"[0-9a-fA-F]+" )]
private static partial Regex HexDecRegex();
[RegexGenerator( @"[\/\\]$", RegexOptions.CultureInvariant | RegexOptions.Multiline )]
private static partial Regex BuildGetRequestRegex();
[RegexGenerator( @"[^0-9a-f]", RegexOptions.CultureInvariant | RegexOptions.IgnoreCase )]
private static partial Regex PingRegex();
#endregion

我不知道为什么会这样,但Visual Studio创建的代码的原始版本(在问题中引用(在标记中使用了术语RegexGenerator。不过在升级之后,术语现在是GeneratedRegex

手动完成项目并用新术语替换所有旧术语,完全解决了问题。当然会发生一些奇怪的事情,但我会发布这篇文章,以防其他人经历过,这会有所帮助。

最新更新