Search code examples
macosxamarinmonodevelopsteambotmdtool

How to build a .sln file using mdtool on OS X


I'm trying to compile a .sln file within /SteamBot-master/SteamBot.sln. After research I found out that I can only use mdtool within the mdtool directory within Xamarin Studio. So what I enter into the Terminal is the following:

"/Applications/Xamarin\ Studio.app/Contents/MacOS/mdtool" -v build SteamBot-master/SteamBot.sln

This is the error message I get:

-bash: /Applications/Xamarin\ Studio.app/Contents/MacOS/mdtool: No such file or directory

The mdtool.exec application is within the MacOS file, I already checked that. When I try to run the application within Xamarin Studio, I get the following error:

/Users/Tom/SteamBot-master/.nuget/NuGet.targets: Error: Command 'bash "/Users/Tom/SteamBot-master/.nuget/../.ci/exec-with-retry.sh" mono --runtime=v4.0.30319 /Users/Tom/SteamBot-master/.nuget/NuGet.exe install "packages.config" -source ""  -RequireConsent -solutionDir "/Users/Tom/SteamBot-master/"' exited with code: 127. (SteamTrade)

I'd really appreciate if someone could help me fix this so I can use the application. Thank you very much in advance, and I apologize for my lack of programming knowledge.

Edit: New Error Message

tom-mac-pro:~ Tom$ /Applications/Xamarin\ Studio.app/Contents/MacOS/mdtool -v build SteamBot-master/SteamBot.sln
Xamarin Studio Build Tool
   Building SteamTrade (Debug)
      
      Build started 30.08.2015 14:59:16.
      __________________________________________________
      Project "/Users/Tom/SteamBot-master/SteamTrade/SteamTrade.csproj"
      (Build target(s)):
        
        Target RestorePackages:
            Executing: bash
      "/Users/Tom/SteamBot-master/.nuget/../.ci/exec-with-retry.sh" mono
      --runtime=v4.0.30319 /Users/Tom/SteamBot-master/.nuget/NuGet.exe
      install "packages.config" -source ""  -RequireConsent -solutionDir
      "/Users/Tom/SteamBot-master/"
            bash: /Users/Tom/SteamBot-master/.nuget/../.ci/exec-with-retry.sh:
      No such file or directory
      /Users/Tom/SteamBot-master/.nuget/NuGet.targets: error : Command
      'bash "/Users/Tom/SteamBot-master/.nuget/../.ci/exec-with-retry.sh"
      mono --runtime=v4.0.30319
      /Users/Tom/SteamBot-master/.nuget/NuGet.exe install
      "packages.config" -source ""  -RequireConsent -solutionDir
      "/Users/Tom/SteamBot-master/"' exited with code: 127.
        Task "Exec" execution -- FAILED
        Done building target "RestorePackages" in project
      "/Users/Tom/SteamBot-master/SteamTrade/SteamTrade.csproj".-- FAILED
        
      Done building project
      "/Users/Tom/SteamBot-master/SteamTrade/SteamTrade.csproj".-- FAILED
      
      Build FAILED.
      Errors:
      
      /Users/Tom/SteamBot-master/SteamTrade/SteamTrade.csproj (Build) ->
      /Users/Tom/SteamBot-master/.nuget/NuGet.targets (RestorePackages
      target) ->
      
        /Users/Tom/SteamBot-master/.nuget/NuGet.targets: error : Command
      'bash "/Users/Tom/SteamBot-master/.nuget/../.ci/exec-with-retry.sh"
      mono --runtime=v4.0.30319
      /Users/Tom/SteamBot-master/.nuget/NuGet.exe install
      "packages.config" -source ""  -RequireConsent -solutionDir
      "/Users/Tom/SteamBot-master/"' exited with code: 127.
      
         0 Warning(s)
         1 Error(s)
      
      Time Elapsed 00:00:00.1292110
/Users/Tom/SteamBot-master/.nuget/NuGet.targets : error: Command 'bash "/Users/Tom/SteamBot-master/.nuget/../.ci/exec-with-retry.sh" mono --runtime=v4.0.30319 /Users/Tom/SteamBot-master/.nuget/NuGet.exe install "packages.config" -source ""  -RequireConsent -solutionDir "/Users/Tom/SteamBot-master/"' exited with code: 127.

Solution

  • I am assuming you are using the SteamBot source code from GitHub:

    https://github.com/Jessecar96/SteamBot

    The .ci/exec-with-retry.sh file is missing since this is part of the continuous integration build and it is not on GitHub.

    Probably the simplest workaround is to edit the .nuget/NuGet.targets file and change the following line:

    <RestoreCommand Condition=" '$(OS)' != 'Windows_NT' ">bash "$(NuGetToolsPath)\..\.ci\exec-with-retry.sh" $(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)"  $(RequireConsentSwitch) -solutionDir "$(SolutionDirParsed)"</RestoreCommand>
    

    To:

    <RestoreCommand Condition=" '$(OS)' != 'Windows_NT' ">$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)"  $(RequireConsentSwitch) -solutionDir "$(SolutionDirParsed)"</RestoreCommand>
    

    This just removes the reference to the file and to bash.