c# - 在特定于包的 MSBuild 文件中使用全局使用来传送 NuGet 包的最佳实践?

标签 c# msbuild nuget nuget-package

一些背景:致力于分发我们的核心 NuGet 包的新版本,其中有一些重大更改,只需引用已使用多年的命名空间即可解决这些更改。

我有兴趣在我们的 NuGet 包中发送 {package-name}.props 文件,该文件将自动应用以下内容:

<Project>
    <ItemGroup Condition="'$(ImplicitUsings)' == 'true'">
        <PackageReference Include="MyProject" Version="6.1.0" />
        <Using Include="MyProject.NonDefaultNamespace" />
    </ItemGroup>
</Project>

这是我不知道该怎么做的:

  1. 如果我想将此global using 语句应用于尽可能多的旧用户,那么此处应用的正确条件是什么?检查ImplicitUsings是否启用? .NET 版本? C# 语言版本?
  2. 我是否需要在 ItemGroup 内的包中包含 PackageReference,还是已经通过 .csproj 内引用的包完成了此操作>/.fsproj
  3. 这是否会以我不知道的其他方式成为一把步枪?

谢谢!

最佳答案

我会避免添加 global using在 nuget 包中。问题在于,它会将该命名空间添加到消费项目中的每个文件中,而无需消费者明确选择。这可能会导致类型名称冲突,从而令人困惑且难以解决。

我认为最好记录添加 <Using>元素添加到他们的 .csproj,作为他们明确选择加入全局行为的一种方式。

关于c# - 在特定于包的 MSBuild 文件中使用全局使用来传送 NuGet 包的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75512600/

相关文章:

c# - "pure virtual function call"消息框

python - 安装 pymssql 时出错

c# - MSBuild - 解决方案文件错误 MSB5010 : No file format header found

powershell - 在程序包管理器控制台中,出现 'Set-Location' 无法识别错误,无法加载

c# - 如何验证存储在 C# 类中的数据

c# - 使用 ManagementClasses 添加 ScriptMap 对象

c++ - 创建 .sln/vcproj 文件

c# - 寻找一个 msbuild 和 xbuild 任务来获取引用的库(没有 nuget.exe)

nuget - 如何从 Visual Studio for Mac 中删除 NuGet 包?

c# - 如何停止父窗体上的计时器 (C#)