2017-10-19 198 views
0

TLDR;我有一個混合的解決方案:我正在開發的庫的NetStandard 2.0和測試的.Net Framework 4.6.2(或者dotnetcore 2.0)。如何配置travis.yml來構建庫和測試項目。在travis中構建dotnet解決方案netstandard20和framework462

我實際上正在爲一個休息API的客戶端。我決定使用.NET Standard 2.0作爲項目類型。由於這是一個基於REST的api,我決定使用Newtonsoft.Json對內容進行反序列化和序列化。

發生了一個問題:nuget包Newtonsoft.Json 10.0.3現在不支持NetStandard 2.0。但我發現提交ab3315f確實。所以我克隆了repo並自己構建了netstandard庫作爲工作區,直到NuGet中有新版本可用。

我加入了項目CI系統特拉維斯以下這篇文章:https://rimdev.io/building-net-core-on-travis-ci/

現在我使用NUnit運行單元測試和集成測試我的庫添加一個測試項目,我的解決方案。沒有我面臨的兩個問題,我需要解決一個:

問題1:當我的測試項目的目標是.NET框架,我能夠執行所有的單元測試沒有任何問題,但現在travis抱怨基於我的travis.yml沒有安裝mono來正確構建完整的解決方案。 我的問題在這裏:如何更改我的.travis.yml在解決方案中構建兩個項目類型。

問題2:如果我的測試項目目標dotnetcore,我的本地建築工作,但是當我嘗試在本地執行的測試中,我得到一個運行時錯誤:

System.IO.FileNotFoundException : Could not load file or assembly 'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null'. 

這就是爲什麼我沒有測試特拉維斯建設到現在爲止,我想先讓它在本地運行,如果這是解決方案。我不知道爲什麼它沒有找到依賴關係。

對於問題1或問題2有何建議?

回答

0

我最終添加了Newtonsoft.Json 10.0.3的NuGet包到我的dotnetcore測試項目中,儘管它並沒有直接用在那裏。現在運行時錯誤消失了。所以我能夠在本地和遠程進行測試,並讓Travis CI構建我的項目。

+0

你使用Package Reference還是'packages.config'?爲了支持.NET標準,您應該使用前者以及所有Microsoft最新工具,例如VS 2017 15.4及更高版本。我有一個例子,https://blog.lextudio.com/tips-for-net-core-unit-testing-92a8d123a17a雖然它使用xUnit.net。 –