2017-04-25 70 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

好的,我可以試試。你是否使用任何特定參數來恢復和構建?謝謝! –

相關問題