Asp.net core ASP.NET核心应用程序的CI生成失败:找不到缺少的程序集和代码分析器

Asp.net core ASP.NET核心应用程序的CI生成失败:找不到缺少的程序集和代码分析器,asp.net-core,azure-devops,visual-studio-2017,Asp.net Core,Azure Devops,Visual Studio 2017,我有一个VisualStudio在线站点,其中一个项目配置为使用Git作为源代码控制。我创建了一个ASP.NET Core for.NET Framework项目,向导为我创建了标准组件。我提交了解决方案,并使用ASP.NET核心模板在VSO中创建了一个新的内部版本。我使用VS2017主机将构建排队,构建成功 然后我开始着手我的项目:添加了几个类库、一个Microsoft.Graph nuget包等。我的解决方案的布局如下: MyProject(ASP.NET核心应用程序) MyProject

我有一个VisualStudio在线站点,其中一个项目配置为使用Git作为源代码控制。我创建了一个ASP.NET Core for.NET Framework项目,向导为我创建了标准组件。我提交了解决方案,并使用ASP.NET核心模板在VSO中创建了一个新的内部版本。我使用VS2017主机将构建排队,构建成功

然后我开始着手我的项目:添加了几个类库、一个Microsoft.Graph nuget包等。我的解决方案的布局如下:

  • MyProject(ASP.NET核心应用程序)
  • MyProject.Application(类库)
  • MyProject.Application.LicenseGenerator(控制台应用程序)
  • MyProject.Domain.Commands(类库)
  • MyProject.Domain.Models(类库)
  • MyProject.Domain.Queries(类库)
  • MyProject.Infrastructure.Activation(类库)
  • MyProject.Infrastructure.Persistance(具有EF核心的类库)
  • MyProject.Infrastructure.Persistance.Office 365(带有Microsoft.Graph的类库)
我测试了代码,它按照预期编译和工作,所以我提交了它,创建了一个新的拉请求,然后将一个新的构建排队;但是,唉,这次我的构建在构建步骤中失败了

当我分析这些痕迹时,我得到了很多类似这样的警告:(

C:\Program Files\dotnet\sdk\1.0.2\Microsoft.Common.CurrentVersion.targets(1964,5): 
warning MSB3245: Could not resolve this reference. Could not 
locate the assembly "Microsoft.Extensions.DependencyInjection.Abstractions, 
Version=1.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, 
processorArchitecture=MSIL". Check to make sure the assembly exists on disk. 
If this reference is required by your code, you may get compilation errors. 
[C:\a\1\s\MyProject.Infrastructure.Persistance.Office365 
\MyProject.Infrastructure.Persistance.Office365.csproj]
问题是,这些警告到处都是,并且提到了一些组件,比如System.Console、System.IO、System.Reflection等等。最后,我得到了如下编译错误:

AccountRepository.cs(5,17): error CS0234: The type or namespace name 'Graph' 
does not exist in the namespace 'Microsoft' (are you missing an assembly 
reference?) 
这似乎是一个愚蠢的错误,因为代码引用的是Microsof.Graph程序集,当然它是存在的(毕竟,我的代码是在我的机器上编译的)。但也有许多类似的错误,其他错误甚至提到系统程序集,如System.Net.Http

Another error I get is the following: error CS0006: Metadata file 
'..\packages\Microsoft.CodeAnalysis.Analyzers.1.1.0\analyzers\dotnet\cs\
Microsoft.CodeAnalysis.Analyzers.dll' could not be found 
[C:\a\1\s\MyProject.Application\MyProject.Application.csproj]
我从未引用过任何代码分析程序集,所以我不知道为什么要调用它们

不管怎样,我不知道为什么会出现这些错误。我确保没有签入程序集,以便强制恢复程序集,但没有效果。我不明白为什么它会在我的机器上编译,但在CI构建中它不会,除了执行构建的宿主环境有问题,或者我用于构建的模板有问题

为了测试后者,我创建了一个新的CI构建,这次使用的是VisualStudio模板。构建仍然失败,但是我以前得到的所有警告消息和缺少的引用错误都消失了,但是我仍然得到代码分析错误,以及一个新的错误:

[error]C:\Program Files (x86)\Microsoft Visual Studio\2017\
Enterprise\MSBuild\Sdks\Microsoft.NET.Sdk\build\
Microsoft.NET.Sdk.targets(92,5): Error : Assets file 
'C:\a\1\s\MyProject\obj\project.assets.json' not found. Run a 
NuGet package restore to generate this file.
这似乎很奇怪,因为CI构建模板执行NuGet包还原,该还原被标记为成功

我做的另一个测试是从我的解决方案中删除ASP.NET核心项目并尝试构建,瞧,它成功了。因此,问题似乎不是类库或控制台应用程序,而是ASP.NET核心应用程序本身


所以,我的问题是,我错过了什么?我是否缺少配置步骤?

我还不信任TFS中的ASPNET核心模板。它有挥之不去的和隐藏的问题。对我来说没什么用


就我个人而言,我在构建管道中添加了两个
命令行
步骤,并在执行实际的sol构建之前,以适当的顺序执行手动
dotnet还原
dotnet构建

好的,我可以试试。您是否使用任何特定参数进行恢复和生成?谢谢您也可以尝试使用这些任务来构建asp.net核心项目谢谢@Marina MSFT,但遗憾的是,它仍然失败。文章中描述的第二个任务Build:Visual Studio Build仍然失败,与我在VS Build:2017-04-27T20:24:58.8707453Z中遇到的错误相同。CSC:error CS0006:Metadata file'..\packages\Microsoft.codesanalysis.Analyzers.1.1.0\Analyzers\dotnet\cs\Microsoft.codesanalysis.Analyzers.dll'找不到[C:\a\1\s\MyProject.Application\MyProject.Application.csproj]能否将整个生成日志上载到某个位置?首先,您应该检查还原的包是否是您期望的包。此外,您还应该检查是否在自己的计算机上签出整个git存储库(在新目录中)编译它也可以。事实上,它只在您机器上的一个目录上工作意味着很少。您可以在OneDrive上共享详细的构建日志吗?如果您可以在新项目中重现此问题,您也可以在OneDrive上共享示例项目。