在travis中构建dotnet解决方案netstandard20和framework462

在travis中构建dotnet解决方案netstandard20和framework462

问题描述:

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有何建议?

我最终添加了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。 –