Building VS 2017 MSBuild csproj проекты с моно на Linux

у меня проекты .NET Core Я пытаюсь построить с помощью Travis CI на Mac и Linux, используя новейший инструмент Mono и .NET Core 1.0.1 (инструмент csproj на основе MSBuild). Они нацелены netstandard1.6.1, net45 и net461. Ошибка, которую я получаю от Трэвис ки - это:

/ usr / share / dotnet / sdk / 1.0.1 / Microsoft.Общий.CurrentVersion будет.целевые показатели(1111,5): ошибка MSB3644: ссылочные сборки для framework ".NETFramework, версия=v4.5" не найдены. К разрешите это, установите SDK или пакет таргетинга для этой версии фреймворка или перенастройки приложение к версии платформы, для которой у вас есть SDK или установлен пакет таргетинга. Обратите внимание, что сборки будут решены из глобального кэша сборок (GAC) и будет использоваться вместо связанная сборка. Поэтому ваша сборка может быть неправильной предназначен для структуры, которую вы намереваетесь.

моно не поддерживает VS 2017 MSBuild на основе csproj проекты? Как я могу заставить свои проекты строить?

3 ответов


здесь есть два варианта, насколько мне известно:

  • использовать FrameworkPathOverride переменная окружения, как описано в этот вопрос указать на них.

  • ограничьте сборку Travis только для сборки с .NET Core. По моему опыту, это значительно проще.

вот время Нода .travis.yml файл, который я буду использовать для Нода Времени когда я могу мигрировать-это предварительно сказать по меньшей мере, но он строит...

language: csharp
mono: none
dotnet: 1.0.1
dist: trusty

script:
  - dotnet restore src/NodaTime
  - dotnet restore src/NodaTime.Test
  - dotnet restore src/NodaTime.Serialization.Test
  - dotnet build src/NodaTime -f netstandard1.3
  - dotnet build src/NodaTime.Test -f netcoreapp1.0
  - dotnet build src/NodaTime.Serialization.Test -f netcoreapp1.0
  - dotnet run -p src/NodaTime.Test/*.csproj -f netcoreapp1.0 -- --where=cat!=Slow
  - dotnet run -p src/NodaTime.Serialization.Test/*.csproj -f netcoreapp1.0

несколько заметок об этом:

  • в отличие от предыдущих SDKs, теперь нам нужно восстановить каждый проект отдельно-нет большого "восстановления dotnet на верхнем уровне": (
  • Я был удивлен, когда это не работает на dist: xenial, но это не так. (Он утверждает, что среда не поддерживает .NET Core. Думаю, это изменится.
  • мы используем NUnit, и на данный момент единственный способ тестирования в новом SDK-использовать NUnitLite, отсюда dotnet run тесты
  • Я немного удивлен, что не могу просто указать каталог имя dotnet run (согласно dotnet restore и dotnet build) но, похоже, так обстоят дела. Я найду сообщение об ошибке...

в любом случае, я бы рекомендовал и наличие сборки CI на базе Windows, чтобы проверить, что все строит и работает на Windows (в идеале тестирование каждой поддерживаемой платформы).


Mono поддерживает создание проектов VS2017 .Net Framework, поскольку теперь использует msbuild.

чтобы заставить его работать на Travis CI немного сложно, но это должно сделать трюк:

  - wget -q https://packages.microsoft.com/config/ubuntu/14.04/packages-microsoft-prod.deb
  - sudo dpkg -i packages-microsoft-prod.deb
  - wget -q http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/gcc-5-base_5.4.0-6ubuntu1~16.04.9_amd64.deb
  - sudo dpkg -i gcc-5-base_5.4.0-6ubuntu1~16.04.9_amd64.deb
  - wget -q http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.9_amd64.deb
  - sudo dpkg -i libstdc++6_5.4.0-6ubuntu1~16.04.9_amd64.deb
  - wget -q http://security.ubuntu.com/ubuntu/pool/main/i/icu/libicu55_55.1-7ubuntu0.4_amd64.deb
  - sudo dpkg -i libicu55_55.1-7ubuntu0.4_amd64.deb
  - sudo apt-get install apt-transport-https
  - sudo apt-get install -y libicu55
  - sudo apt-get install dotnet-runtime-deps-2.1
  - sudo apt-get install dotnet-runtime-2.1
  - sudo apt-get install aspnetcore-runtime-2.1
  - sudo apt-get install dotnet-sdk-2.1

в принципе, вам нужно вручную установить dotnet-sdk вручную и все его зависимости.

затем просто вызовите msbuild:

  - msbuild /p:Configuration=Release Solution.sln

вчера (5 мая) @dasMulli указал, что Mono выпустил Mono 5.0 Beta 2 (5.0.0.94), который работает с .NET Core! Вот его сообщение на dotnet / sdk#335. Вот ссылка на последнюю бета-версии

мой .Трэвис.файл yml выглядит так:

sudo: required
dist: trusty
language: csharp
solution: MySolution.sln
mono:
  - beta
dotnet: 1.0.3

install:
  - nuget restore MySolution.sln
  - dotnet restore MySolution.sln

script:
  - msbuild /t:Rebuild MySolution.sln