2

有没有一种方法可以确定使用哪个 dotnet SDK 构建程序集(针对 dotnet 核心)?

到目前为止,我们还没有使用 global.json 来指定使用哪个 dotnet SDK 来构建我们的程序集,这意味着使用的是最新的 SDK。我们最近为新项目切换到 dotnet 3.1.x,但仍有很多项目针对 dotnet 2.1.x

我不确定在使用 dotnet 3.1.x SDK 构建针对 dotnet 2.1.x 的项目时会引入什么样的细微变化(甚至是错误?)

确保我们将使用global.json(以便定义构建时使用的 .NET Core SDK 版本)。并且,如果可能的话,将检查已经交付了多少使用更高 dotnet 核心 SDK 构建的程序集。甚至可能吗?

4

1 回答 1

2

注意:可能有更简单的方法可以做到这一点,但我目前不知道。我不知道从现有程序集中确定它的任何方法。

使用 .NET Core SDK 构建时,NETCoreSdkVersion会设置一个 MSBuild 属性。

您可以使用BeforeTargets="CoreCompile"生成包含该构建属性的源代码的目标来添加程序集级属性(您必须自己定义)。这将类似于AssemblyInfo.g.cs已经生成的方式。

恐怕我现在没有足够的时间来整理它的完整示例 - 但是您可以在此处查看自动代码生成的示例。这targets是 NuGet 包中目录的一部分,因此依赖于该包的代码会自动生成代码;你可以做类似的事情,或者如果一切都在同一个解决方案中,你可以使用 aDirectory.Build.targets或类似的。

于 2020-05-05T07:09:10.513 回答