我有一个应用程序,由几个项目组成(例如,
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 中创建任务)。
看起来这段代码对我有用。我把它放入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。因此,我仍然可以在运行时使用它(考虑其他依赖项),但我无法添加将使用它的代码。