每个项目的补丁程序集和nuget版本独立

时间:2018-04-13 18:15:14

标签: c# .net-core nuget azure-devops

我有一个包含多个项目的解决方案(每个项目都是一个常用工具的nuget包)。

我想在VSTS中构建所有这些项目。

每个项目都有一个独特的版本。

  1. version.txt文件存储在每个项目的文件夹中,并包含x.x.x
  2. 格式的版本
  3. 在构建之前,应该使用此版本修补每个项目
  4. 构建并推送nuget包
  5. VSTS包含任务dotnet build,可以构建整个解决方案或具体项目。但我需要自动化这个过程 - 一旦添加新项目,它应该自动构建。

    我没有找到可以读取文件并修补csproj(FileVersion,AssemblyVersion,Version,PackageVersion)的所有参数的现成构建任务,并按项目执行此操作。

    让这个version.txt文件具有单点配置(而不是更改所有参数)会很棒

2 个答案:

答案 0 :(得分:0)

  

我没有找到可以读取文件的即用型构建任务   修补csproj的所有参数(FileVersion,AssemblyVersion,Version,   PackageVersion),并按项目执行此操作

实际上,您可以通过相关任务轻松获得AssemblyFileVersion和AssemblyVersion(例如 Assembly Info Reader task )。

您只需指定AssemblyInfo.cs文件的路径,然后您可以通过变量$(ASSEMBLYINFO.ASSEMBLYFILEVE)获取AssemblyFileVersion,并通过变量$(ASSEMBLYINFO.ASSEMBLYVERSION)获取AssemblyVersion。您可以使用该软件包的版本。

BTW:默认情况下,打包的包使用它的AssemblyVersion。因此,如果您想要使用其AssemblyVersions包,则无需进行其他设置。

答案 1 :(得分:0)

我没有找到解决方案所以发明了一种新的自行车。

  1. 在每个项目文件夹中都有一个version.txt文件,其中包含精确包的版本

  2. Powershell脚本查找所有version.txt个文件,并使用该文件中的版本来修补.csproj文件(包,程序集,等等)

  3. 构建所有项目

  4. 在我的场景中,我不想在版本中添加内部版本号,因此我的版本包含相同版本的软件包。所以我想跳过已存在的包

  5. 使用Powershell脚本,我nuget list <package name>检查包是否已存在。

    如果没有 - 将其推送到存储库。