Msbuild TFS2017 dotnet生成未覆盖版本号

Msbuild TFS2017 dotnet生成未覆盖版本号,msbuild,tfsbuild,msbuild-task,.net-standard-2.0,Msbuild,Tfsbuild,Msbuild Task,.net Standard 2.0,我正在使用TFS2017构建过程,在对程序集进行版本控制时遇到问题。我正在使用dotnet构建任务,命令设置为build,项目设置为***.sln,参数设置为--configuration$(BuildConfiguration)/p:Version=$(build.BuildNumber) 查看TFS构建日志时,会执行正确的命令(见下文) 但是,程序集的版本(文件版本和产品版本)显示为1.0.0 csproj文件中没有元素 当我作为构建代理用户在构建服务器上运行上述generate命令时,程序

我正在使用TFS2017构建过程,在对程序集进行版本控制时遇到问题。我正在使用dotnet构建任务,命令设置为
build
,项目设置为
***.sln
,参数设置为
--configuration$(BuildConfiguration)/p:Version=$(build.BuildNumber)

查看TFS构建日志时,会执行正确的命令(见下文)

但是,程序集的版本(文件版本和产品版本)显示为1.0.0

csproj文件中没有
元素

当我作为构建代理用户在构建服务器上运行上述generate命令时,程序集的版本控制正确。我的csproj或解决方案属性中是否缺少某些内容

TL&DR

确保生成服务器上的后续生成步骤正在传递任何必要的
--no build
标志,以防止默认情况下
dotnet
命令重新编译!!!例如:

dotnet test my.csproj --no-build --no-restore
dotnet publish my.csproj --output mydir --no-build --no-restore


好的!我在使用TeamCity构建服务器时遇到了这个问题。我将通过TeamCity运行构建过程,我的输出nuget文件将包含默认版本为1.0.0.0的DLL。但是当我查看构建日志时,我会从日志文件中获取
dotnet build
命令,在服务器上运行它,然后在bin目录中获得版本化的DLL


这是我发现发生的事情。在我的构建管道中,在build命令之后,我还运行了其他命令,如
dotnettest
dotnetpublish
。默认情况下,这些命令将在不使用构建参数的情况下重新编译解决方案/项目!此外,他们将重新编译任何引用的依赖项项目。

我也有同样的问题,并发现if.csproj包含
false
版本参数被完全忽略。请参阅与之关联的。使其
为真
或删除此项可以解决问题。

也许这个答案会有帮助()@markoral问题是,从生成日志文件运行生成的命令会生成具有正确版本控制的dll,但从生成代理程序生成的dll没有版本控制。您发布的回复似乎是通过使用版本前缀和版本后缀来解决的。好的,嗯,现在有几个问题。您将使用哪种类型的生成步骤进行此操作?您是否尝试使用带有属性参数的msbuild步骤来查看其版本是否正确?我使用的是dotnet生成任务版本1.*。没有理由将msbuild任务作为生成代理生成的命令来运行,以便在生成服务器中运行时正确地运行works和版本dll。@davefester您是否解决过这个问题,现在出现了完全相同的问题:(
dotnet test my.csproj --no-build --no-restore
dotnet publish my.csproj --output mydir --no-build --no-restore