我有一個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倉庫(在一個新的目錄中)並編譯它也可以。它只適用於你的機器上的一個目錄的事實意味着很少。 –