我有一个包含多个项目的解决方案(每个项目都是一些常见实用程序的 nuget 包(。
我想在 VSTS 中构建所有这些项目。
问题 每个项目都有唯一的版本。
-
version.txt
文件存储在每个项目的文件夹中,并包含格式x.x.x
的版本 - 在构建之前,应使用此版本修补每个项目
- 生成和推送 NuGet 包
VSTS 包含可以生成整个解决方案或具体项目的任务dotnet build
。但是我需要自动化此过程 - 添加新项目后,它应该自动构建。
我没有找到可以读取文件并修补csproj(文件版本,组装版本,版本,包版本(的所有参数的现成构建任务,并为每个项目执行此操作。
拥有此版本.txt文件具有单点配置(而不是更改所有参数(会很棒
我没有找到可以读取文件的现成构建任务,并且 修补 csproj 的所有参数(文件版本、汇编版本、版本、 包版本(,并按项目执行此操作
实际上,您可以通过相关任务(例如程序集信息阅读器任务(轻松获取AssemblyFileVersion和AssemblyVersion。
你只需要指定AssemblyInfo.cs
文件的路径,然后你可以通过变量$(ASSEMBLYINFO.ASSEMBLYFILEVE)
获取AssemblyFileVersion,并通过变量$(ASSEMBLYINFO.ASSEMBLYVERSION)
获取AssemblyVersion。您可以使用包的版本。
顺便说一句:打包的软件包默认使用它的AssemblyVersion。因此,如果你想让包使用它们的AssemblyVersions,则无需进行额外的设置。
我没有找到解决方案,所以发明了一辆新自行车。
-
在每个项目文件夹中都有一个
version.txt
文件,其中包含确切包的版本 -
Powershell 脚本查找所有
version.txt
文件,并使用文件中的版本修补.csproj
文件(包、程序集等( -
构建所有项目
-
在我的方案中,我不想向版本添加内部版本号,因此我在构建版本上具有相同版本的包。所以我想跳过已经存在的软件包
使用Powershell脚本,我nuget list <package name>
检查包是否已存在。
如果没有 - 将其推送到存储库。