2017-04-25 54 views
1

我有一个Visual Studio Online站点,其中一个项目配置为使用Git作为源代码控制。我为.NET Framework项目创建了一个ASP.NET Core,该向导为我创建了标准组件。我提交了解决方案并使用ASP.NET Core模板在VSO中创建了一个新的构建。我使用VS2017 Host排队构建,构建成功。对于ASP.NET Core应用程序,CI构建失败:未找到缺少的程序集和代码分析器

然后,我开始在我的项目上工作:增加了几个类库,一个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] 

我从来没有对任何CodeAnalysis装配,所以我不知道为什么会被调用它们的参考。

无论如何,我不知道为什么我会得到这些错误。我确定没有检入程序集,以强制恢复程序集,但无济于事。我不明白为什么它会在我的机器中编译,但在CI构建中它不会,除了执行构建的宿主环境的问题或者我用于构建的模板的问题之外。

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

[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 Core项目并尝试构建,并且它工作。所以问题似乎不是类库或控制台应用程序,而是ASP.NET Core应用程序本身。

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

+0

您也可以尝试使用这些任务来构建您的asp.net核心项目https://www.visualstudio.com/en-us/docs/build/apps/aspnet/ci/build-aspnet-core#add -the-tasks –

+0

谢谢@ Marina-MSFT,但唉,它仍然失败。文章“Build:Visual Studio Build”中描述的第二个任务仍然失败,因为VS Build有相同的错误: 2017-04-27T20:24:58.8707453Z CSC:错误CS0006: 元数据文件'.. \ packages \ Microsoft.CodeAnalysis.Analyzers.1.1.0 \ analyers \ dotnet \ cs \ Microsoft.CodeAnalysis.Analyzers.dll'could not be found [C:\ a \ 1 \ s \ MyProject.Application \ MyProject.Application .csproj] –

+0

你可以上传整个构建日志的某个地方吗?你应该首先检查恢复的软件包是否是你期望的软件包。此外,你应该检查是否在你自己的机器上检查整个git仓库(在一个新的目录中)并编译它也可以。它只适用于你的机器上的一个目录的事实意味着很少。 –

回答

0

我不信任TFS中的ASPNET核心模板。它有滞留和隐藏的问题。它没有为我工作太多。

个人而言,我在构建管道中添加了几个command line步骤,并在执行实际sol构建之前以适当的顺序执行手动dotnet restoredotnet build

+0

好的,我可以试试。你是否使用任何特定参数来恢复和构建?谢谢! –

相关问题