我真的很喜欢 Visual Studio 2022 中的新生产力工具同步命名空间,但有时在极少数情况下我需要在同步命名空间时排除某些文件或文件夹。
示例1
按照约定,DI 扩展应在
Microsoft.Extensions.DependencyInjection
命名空间中创建。来自 ASP.NET Core 指南 :
我们建议应用遵循在 Microsoft.Extensions.DependencyInjection 命名空间中创建扩展方法的命名约定。在 Microsoft.Extensions.DependencyInjection 命名空间中创建扩展方法:
- 封装服务注册组。
- 提供对服务的便捷 IntelliSense 访问。
示例2
我有 .NET Standard 2.0 项目,我想在其中使用基于构造函数的记录声明并根据此解决方案在 VS2019 中测试 C# 9.0 - CS0518 IsExternalInit 未定义或导入...我如何定义/导入它?我正在将以下文件添加到我的项目中:
namespace System.Runtime.CompilerServices;
internal static class IsExternalInit { }
显然,在执行“同步命名空间”后,此文件将被更改,并且该技巧将不起作用。
在我们的项目中,我们在要防止使用 SyncNamespaces 重命名的文件中抑制了 IDE0130、S1200。到目前为止,这对我们来说效果很好。
#pragma warning disable IDE0130, S1200
namespace Microsoft.Extensions.DependencyInjection;
public static class ServiceConfiguration
{
public static IServiceCollection AddMyLibrary(this IServiceCollection services)
{
...
return services
}
}
发现这个问题,因为我对 Extensions.DependencyInjection 也有同样的问题。
我想提一下在这种情况下可以帮助您进行外部初始化的事情:该内部初始化有一个 nuget 包:https://www.nuget.org/packages/IsExternalInit。
希望至少能帮助您解决这个问题。
您说的是.NET Standard 2.0项目但没有确认其CORE还是Framework?
VS2022及其后续版本将优先支持主要CORE版本。我不知道为什么,但努力做到通用是微软的首要目标。
他们修改了自己的平行世界,而不是创建平行世界。
尝试安装/添加最低版本为 4.8.xx 的框架,否则返回旧的 Visual Studio IDE。