dav*_*ter 4 msbuild msbuild-task tfsbuild .net-standard-2.0
我正在使用 TFS2017 构建过程,并且在程序集版本控制方面遇到问题。我正在使用 dotnet 构建任务,命令设置为build,项目设置为**/*.sln,参数设置为--configuration $(BuildConfiguration) /p:Version=$(Build.BuildNumber)
查看 TFS 构建日志时,会执行正确的命令(见下文)
"C:\Program Files\dotnet\dotnet.exe" build C:\_agent\_work\13\s\*nameofsolution*.sln --configuration Release /p:Version=1100.1.0.0005
Run Code Online (Sandbox Code Playgroud)
但是,程序集的版本(文件版本和产品版本)显示为 1.0.0。
csproj 文件中没有<Version>元素。
当我作为构建代理用户在构建服务器上运行上述生成命令时,程序集的版本控制正确。我的 csproj 或解决方案属性中是否缺少某些内容?
TL&DR
确保构建服务器上的后续构建步骤传递任何必要的--no-build标志,以防止dotnet命令默认重新编译!例如:
dotnet test my.csproj --no-build --no-restore
dotnet publish my.csproj --output mydir --no-build --no-restore
Run Code Online (Sandbox Code Playgroud)
好的!我在使用 TeamCity 作为构建服务器时遇到了这个问题。我将通过 TeamCity 运行构建过程,并且我的输出 nuget 文件将包含默认版本 1.0.0.0 的 DLL。但是当我查看构建日志时,我会dotnet build从日志文件中获取命令,在服务器上运行它,然后我会在 bin 目录中获得版本控制的 dll。
这就是我发现正在发生的事情。在我的构建管道中,在build 命令之后,我还运行了其他命令,例如dotnet test和dotnet publish。默认情况下,这些命令将在没有构建参数的情况下重新编译解决方案/项目!此外,他们将重新编译任何引用的依赖项项目。
| 归档时间: |
|
| 查看次数: |
2358 次 |
| 最近记录: |