我有一个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应用程序本身。
所以,我的问题是,我错过了什么?我是否缺少配置步骤?
您也可以尝试使用这些任务来构建您的asp.net核心项目https://www.visualstudio.com/en-us/docs/build/apps/aspnet/ci/build-aspnet-core#add -the-tasks –
谢谢@ 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] –
你可以上传整个构建日志的某个地方吗?你应该首先检查恢复的软件包是否是你期望的软件包。此外,你应该检查是否在你自己的机器上检查整个git仓库(在一个新的目录中)并编译它也可以。它只适用于你的机器上的一个目录的事实意味着很少。 –