从外部文件而不是 .csproj 文件读取版本前缀

alo*_*lok 1 linux msbuild csproj .net-core-2.0

此时,我的 .csproj 文件包含 XPath /Project/PropertyGroup/VersionPrefix,它确定 nuget 包的版本。但是,我更愿意从共享文件中读取此版本前缀,因为这对于 3 或 4 个项目来说很常见,每个项目都有自己的 .csproj 文件。

换句话说,而不是有

<VersionPrefix>2.0.0</VersionPrefix>

我们希望有类似的东西

@@include ../../version.xml

并且此 version.xml 包含上面将被替换的行。

我确信有多种方法可以实现这一目标,但无法确切了解如何实现。如有帮助,将不胜感激。

Mar*_*ich 5

您可以在所有项目上方的文件夹层次结构中创建一个名为的文件Directory.Build.props(例如,在解决方案文件旁边),并将共享属性放入其中:

<Project>
  <PropertyGroup>
    <VersionPrefix>2.0.0</VersionPrefix>
  </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

MSBuild 将自动查找并导入该文件。(您可能需要重新打开编辑器/视觉工作室)。有关详细信息,请参阅 MSBuild 的自定义构建文档。