2016-02-14 5 views
0

При попытке использовать xbuild для создания моего решения через Mono на Mac и Linux (еще не тестировалось под Windows), я получаю эту странную ошибку, что мне не удалось найти где-нибудь еще.Невозможно использовать xbuild для сборки решения (Mono)

Errors: 

/Users/macbook/git/DiscordSharp/DiscordSharp.sln (default targets) -> 
(Build target) -> 
/Users/macbook/git/DiscordSharp/DiscordSharp/DiscordSharp.csproj (default targets) -> 
/Library/Frameworks/Mono.framework/Versions/4.2.2/lib/mono/4.5/Microsoft.CSharp.targets (CoreCompile target) -> 

    /Library/Frameworks/Mono.framework/Versions/4.2.2/lib/mono/4.5/Microsoft.CSharp.targets: error : Tool executable '/MSBuild/14.0/Bin/mcs.exe' could not be found 

    1 Warning(s) 
    1 Error(s) 

Time Elapsed 00:00:02.0472770 
MacBooks-MacBook:DiscordSharp macbook$ 

Интересно, что я могу открыть решение в MonoDevelop и построить его таким образом. Проекты в целевом решении Mono/.NET Framework 4.5. Я бегу Mono 4.2 SR1 (4.2.2.30).

Что может быть причиной этой проблемы и каким образом я могу ее исправить? Эта проблема помешала мне использовать TravisCI в этом проекте, и мне еще предстоит найти исправление.

ответ

1

Файл .csproj только определение не-Unix CscToolPath для Platform условной (OS следует использовать ...), не уверен, что требование для V14 для Windows, так как тест (?):

vi DiscordSharp/DiscordSharp.csproj 

Снимите:

<PropertyGroup Condition="'$(Platform)' != 'Unix'"> 
    <CscToolPath>$(MSBuildProgramFiles32)\MSBuild\14.0\Bin</CscToolPath> 
</PropertyGroup> 

Перестроить проект и он должен работать нормально:

nuget restore 
xbuild DiscordSharp.sln 

Если v14 MSBuild требуется для Windows, вы можете использовать следующее:

<PropertyGroup Condition="'$(OS)' != 'Unix'"> 
    <CscToolPath>$(MSBuildProgramFiles32)\MSBuild\14.0\Bin</CscToolPath> 
</PropertyGroup> 

http://www.mono-project.com/archived/porting_msbuild_projects_to_xbuild/

Тогда следующий должен работать нормально без ошибок:

xbuild /target:clean 
xbuild /target:build 
+0

Работали ! Спасибо тебе за это! Прямо сейчас я скомпилирую Mac/Linux без 'CscToolPath', но если у меня возникнут проблемы в Windows, я попробую еще раз с' OS' вместо 'Platform'. – MrMiketheripper

+0

Настройка CscToolPath - это плохая идея (tm); вы выбираете элементы MSBuild с атрибутом ToolsVersion элемента Project. И если вам нужен конкретный компилятор (например, Roslyn), для него есть пакет NuGet (но я не уверен, что это кросс-платформенный). – Zastai

Смежные вопросы