我的解决方案中的许多nuget包都已经过时了,所以我一一检查它们并将它们更新到最新版本或最近的版本。
构建并测试解决方案后,我尝试将其签入。 构建服务器返回错误。
我撤消了所做的所有更改,并从源代码控制中获取了最新版本,这是在构建服务器上成功构建的最后一个版本。
我向文件添加了一个空格字符并尝试了测试签入。 由于完全相同的原因,这失败了!
我什至尝试在旧版本的 Visual Studio 中打开该项目,但它也不会从中签入。
认为这可能是构建服务器上的问题,我在不同的项目中尝试了相同的测试。这次签入没有问题。
这是构建服务器进程中失败的行的示例...
C:\Windows\ServiceProfiles\NetworkService\.nuget\packages\microsoft.extensions.apidescription.server\6.0.5\build\Microsoft.Extensions.ApiDescription.Server.targets(5,38):
error MSB4186: Invalid static method invocation syntax:"[MSBuild]::VersionLessThanOrEquals('$(TargetFrameworkVersion)', '2.0')".
Method '[MSBuild]::VersionLessThanOrEquals' not found.
Static method invocation should be of the form: $([FullTypeName]::Method()), e.g. $([System.IO.Path]::Combine(`a`, `b`)).
Check that all parameters are defined, are of the correct type, and are specified in the right order.
[C:\vstsagent\vsts-agent-win-x86-2.142.1\_work\11\s\project\project.csproj]
我在 Stack Overflow 上看到过一些类似的问题,但没有一个是完全相同的,而且我真的不明白错误试图告诉我什么。
我不明白为什么签入失败,因为最新版本和我尝试签入的版本之间的唯一区别是空格字符。
我该如何解决这个问题?
编辑添加:我发现了一个似乎与我的问题相符的问题,但就像最后一张海报一样,我不知道在哪里执行此操作...https://learn.microsoft.com/en-us/answers/问题/1353483/无效静态方法调用语法-(msbuild) 降级 nuget 似乎是一个奇怪的选择,因为它之前没有升级过,至少在服务器上是这样。
新编辑:
我认为它可能与一个包有关,因为这个条目......
error MSB4186:
Invalid static method invocation syntax: "[MSBuild]
::VersionLessThanOrEquals('$(TargetFrameworkVersion)', '2.0')".
Method '[MSBuild]::VersionLessThanOrEquals' not found.
Static method invocation should be of the form:
$([FullTypeName]::Method()), e.g. $([System.IO.Path]::Combine(`a`, `b`)).
Check that all parameters are defined, are of the correct type, and
are specified in the right order.
[C:\vstsagent\vsts-agent-win-x86-2.142.1\_work\11\s\API\API.csproj]
我真的不知道如何调试这个。
经过几天的调查,我似乎已经解决了它。
作为测试的一部分,我创建了一个全新的管道,完全从原始管道复制而来,目的是在不改变原始管道的情况下修改一些设置。
当我通过新管道运行这个项目时,它运行得很好。
我已经仔细检查了所有设置,两个管道都是相同的,只是其中一个管道的名称中有一个新的后缀。
如果有人看到这个并可以评论为什么它有效,我会最感兴趣!