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



我有一个包含多个项目的解决方案(每个项目都是一些常见实用程序的 nuget 包(。

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

问题 每个项目都有唯一的版本。

  1. version.txt文件存储在每个项目的文件夹中,并包含格式x.x.x的版本
  2. 在构建之前,应使用此版本修补每个项目
  3. 生成和推送 NuGet 包

VSTS 包含可以生成整个解决方案或具体项目的任务dotnet build。但是我需要自动化此过程 - 添加新项目后,它应该自动构建。

我没有找到可以读取文件并修补csproj(文件版本,组装版本,版本,包版本(的所有参数的现成构建任务,并为每个项目执行此操作。

拥有此版本.txt文件具有单点配置(而不是更改所有参数(会很棒

我没有找到可以读取文件的现成构建任务,并且 修补 csproj 的所有参数(文件版本、汇编版本、版本、 包版本(,并按项目执行此操作

实际上,您可以通过相关任务(例如程序集信息阅读器任务(轻松获取AssemblyFileVersion和AssemblyVersion。

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

顺便说一句:打包的软件包默认使用它的AssemblyVersion。因此,如果你想让包使用它们的AssemblyVersions,则无需进行额外的设置。

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

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

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

  3. 构建所有项目

  4. 在我的方案中,我不想向版本添加内部版本号,因此我在构建版本上具有相同版本的包。所以我想跳过已经存在的软件包

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

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

最新更新