Jenkins 不能使用 MSBuild 但 Visual Studio 可以构建
Jenkins cannot use MSBuild but Visual Studio can build
我有一个 UWP 项目,在 visual studio 2017 年,它可以毫无问题地构建。但是当我编写脚本在 Jenkins 中构建时,我使用以下命令:
nuget 恢复 MySolution.sln
MSBuild.exe MySolution.sln /t:Clean;Build /p:Configuration=Release /p:Platform=x64
rem /verbosity:diagnostic
但我看到错误:
Autofac.Extras.CommonServiceLocator 5.0.0 与 UAP 不兼容,版本=v10.0.16299。
一些包与 UAP 不兼容,Version=v10.0.16299.
为什么在 visual studio 2017 年它不认为这些包不兼容,但在 MSBuild 中,它认为它们不兼容?
Autofac.Extras.CommonServiceLocator 支持 netstandard 2.0。 According to the docs on netstandard netstandard 2.0 和 Universal Windows 10.0.16299 兼容。这就是它在 VS 中运行良好的原因。
如果 NuGet 恢复没有将这些东西视为兼容,则通常是所使用的 NuGet 命令行版本有问题。有时它还与 NuGet.config 文件错误地位于与 NuGet.exe 相同的文件夹中并指示 NuGet 使用与 VS 使用的不同的一组提要有关。
所有这些加起来就是一个工具问题,如果没有重现和日志,就很难排除故障。正如我在评论中提到的,需要更多信息。
如果 Autofac.Extras.CommonServiceLocator 切换为使用 CommonServiceLocator 2.0.3,它可能会启用较低的网络标准,但这可能无法解决您的问题 - 它已经兼容,正如您在 VS 中看到的那样。
我会推荐:
- 确保你有最新的 NuGet.exe
- 确保 NuGet.config 与 NuGet.exe 在同一文件夹中。
- 删除所有构建工件和用户文件(如 .vs 文件夹、bin 和 obj 文件夹)。
- 清理你的临时文件。
- 清除您的 NuGet 缓存 -
nuget locals clear -all
然后重试。
很抱歉,我无能为力。就像你说的,它在一个地方起作用,在另一个地方不起作用。这是一个工具和环境问题,如果没有在其他机器上工作的重现或一组特定的重现步骤,真的很难解决。
我有一个 UWP 项目,在 visual studio 2017 年,它可以毫无问题地构建。但是当我编写脚本在 Jenkins 中构建时,我使用以下命令:
nuget 恢复 MySolution.sln
MSBuild.exe MySolution.sln /t:Clean;Build /p:Configuration=Release /p:Platform=x64 rem /verbosity:diagnostic
但我看到错误: Autofac.Extras.CommonServiceLocator 5.0.0 与 UAP 不兼容,版本=v10.0.16299。 一些包与 UAP 不兼容,Version=v10.0.16299.
为什么在 visual studio 2017 年它不认为这些包不兼容,但在 MSBuild 中,它认为它们不兼容?
Autofac.Extras.CommonServiceLocator 支持 netstandard 2.0。 According to the docs on netstandard netstandard 2.0 和 Universal Windows 10.0.16299 兼容。这就是它在 VS 中运行良好的原因。
如果 NuGet 恢复没有将这些东西视为兼容,则通常是所使用的 NuGet 命令行版本有问题。有时它还与 NuGet.config 文件错误地位于与 NuGet.exe 相同的文件夹中并指示 NuGet 使用与 VS 使用的不同的一组提要有关。
所有这些加起来就是一个工具问题,如果没有重现和日志,就很难排除故障。正如我在评论中提到的,需要更多信息。
如果 Autofac.Extras.CommonServiceLocator 切换为使用 CommonServiceLocator 2.0.3,它可能会启用较低的网络标准,但这可能无法解决您的问题 - 它已经兼容,正如您在 VS 中看到的那样。
我会推荐:
- 确保你有最新的 NuGet.exe
- 确保 NuGet.config 与 NuGet.exe 在同一文件夹中。
- 删除所有构建工件和用户文件(如 .vs 文件夹、bin 和 obj 文件夹)。
- 清理你的临时文件。
- 清除您的 NuGet 缓存 -
nuget locals clear -all
然后重试。
很抱歉,我无能为力。就像你说的,它在一个地方起作用,在另一个地方不起作用。这是一个工具和环境问题,如果没有在其他机器上工作的重现或一组特定的重现步骤,真的很难解决。