Jenkins无法使用MSBuild,但Visual Studio可以生成

Jenkins无法使用MSBuild,但Visual Studio可以生成,jenkins,uwp,msbuild,autofac,service-locator,Jenkins,Uwp,Msbuild,Autofac,Service Locator,我有一个UWP项目,在visual studio 2017中,它可以毫无问题地构建。但当我在Jenkins中编写构建脚本时,我使用以下命令: nuget restore MySolution.sln MSBuild.exe MySolution.sln/t:Clean;构建/p:Configuration=Release/p:Platform=x64 rem/冗长:诊断性 但我看到了错误: Autofac.Extras.CommonServiceLocator 5.0.0与UAP不兼容,版本=v

我有一个UWP项目,在visual studio 2017中,它可以毫无问题地构建。但当我在Jenkins中编写构建脚本时,我使用以下命令:

nuget restore MySolution.sln

MSBuild.exe MySolution.sln/t:Clean;构建/p:Configuration=Release/p:Platform=x64 rem/冗长:诊断性

但我看到了错误: Autofac.Extras.CommonServiceLocator 5.0.0与UAP不兼容,版本=v10.0.16299。 有些软件包与UAP不兼容,版本=v10.0.16299


如何在visual studio 2017中不认为这些包不兼容,但在MSBuild中,它认为它们不兼容?

Autofac.Extras.CommonServiceLocator支持netstandard 2.0。netstandard 2.0与通用Windows 10.0.16299兼容。这就是它在VS中工作良好的原因

如果NuGet restore不认为这些东西是兼容的,那么使用的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局部清除-all
然后再试一次


对不起,我不能提供更多了。就像你说的,它在一个地方起作用,而不是在另一个地方。这是一个工具和环境问题,如果没有在其他机器上运行的重新编程或特定的重新编程步骤集,这是很难解决的。

是MSBuild引发了错误还是
nuget restore
出现了错误?你确定你的nuget.exe是最新的吗?我检查了日志,是nuget restore抛出了这个错误。我下载了nuget.exe 4.6的最新版本,似乎没有帮助。我不知道是否应该在项目级别执行“nuget restore XXX”,我还尝试了MSBuild.exe MySolution.sln/t:restore/t:Clean;Build/p…,也不起作用,我的MSBuild.exe版本是v15,nuget.exe版本是4.6,所有包引用都在项目文件中描述,而不是在packages.Config中。您可能需要打开日志记录并将nuget所说内容的完整输出粘贴到问题中。有一些工具问题或不匹配(显然,因为它在VS中工作),但不幸的是,这里没有足够的信息来解决它。嗨,特拉维斯!你是Autofac.Extras.CommonServiceLocator的作者?!你在这里回答我的问题真是太兴奋了!!我只是在github的问题板上留下了关于这个问题的信息。日志中没有太多信息,当我使用nuget restore MySolution.sln时,它只是说这个Autofac.Extras.CommonServiceLocator 5.0.0的目标框架是net45和standard2.0,但是当我在visual studio中恢复和构建时,没有任何抱怨。我必须在我的日常构建中使用nuget restore脚本。