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