一些背景:致力于分发我们的核心 NuGet 包的新版本,其中有一些重大更改,只需引用已使用多年的命名空间即可解决这些更改。
我有兴趣在我们的 NuGet 包中发送 {package-name}.props
文件,该文件将自动应用以下内容:
<Project>
<ItemGroup Condition="'$(ImplicitUsings)' == 'true'">
<PackageReference Include="MyProject" Version="6.1.0" />
<Using Include="MyProject.NonDefaultNamespace" />
</ItemGroup>
</Project>
这是我不知道该怎么做的:
- 如果我想将此
global using
语句应用于尽可能多的旧用户,那么此处应用的正确条件是什么?检查ImplicitUsings
是否启用? .NET 版本? C# 语言版本? - 我是否需要在
ItemGroup
内的包中包含PackageReference
,还是已经通过.csproj
内引用的包完成了此操作>/.fsproj
- 这是否会以我不知道的其他方式成为一把步枪?
谢谢!
最佳答案
我会避免添加 global using
在 nuget 包中。问题在于,它会将该命名空间添加到消费项目中的每个文件中,而无需消费者明确选择。这可能会导致类型名称冲突,从而令人困惑且难以解决。
我认为最好记录添加 <Using>
元素添加到他们的 .csproj,作为他们明确选择加入全局行为的一种方式。
关于c# - 在特定于包的 MSBuild 文件中使用全局使用来传送 NuGet 包的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75512600/