如何阻止(禁止、禁止)MSBuild SDK 样式项目(C#)中的特定依赖项?

问题描述 投票:0回答:1

我有一个应用程序,由几个项目组成(例如,

projects A, B
),每个项目都有几个直接依赖项,通过
<PackageReference Include=...
添加。这些依赖项还有另一个依赖项,我“免费”获得这些依赖项(又名传递依赖项)。

project A -> library 1
project A -> library 2
project A -> library 3
project B -> library 2
project A -> library 1

library 1 -> Transitive library X
library 3 -> Transitive library Y

我想禁止/禁止/阻止我的代码库中的特定依赖项。意思是,我想让所有尝试直接使用它的构建失败。例如,就我而言,我想阻止

Transitive library Y
。因此,如果有人创建了一个新的更改,并在其代码中使用了它,我需要使此类构建失败。

有什么标准的方法吗?或者我应该手动获取所有依赖项,将它们作为文本进行分析,等等(例如,创建这样的 MsBuild 任务,或在我的 CI/CD 中创建任务)。

c# msbuild dependency-management msbuild-task
1个回答
0
投票

看起来这段代码对我有用。我把它放入Directory.Packages.props

<GlobalPackageReference ExcludeAssets="build" Include="Transitive library Y">
      <IncludeAssets>runtime; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
</GlobalPackageReference>

实际上,我只是将

Transitive library Y
作为直接依赖项包含在全局范围内(通过中央包管理),但我禁止
compile
action。因此,我仍然可以在运行时使用它(考虑其他依赖项),但我无法添加将使用它的代码。

© www.soinside.com 2019 - 2024. All rights reserved.