Domanda

Ho una soluzione in linguaggio misto VS 2010 che è principalmente C #, ma contiene un servizio Windows scritto in F #. Ho avuto questo edificio con xbuild in un ambiente parallelo, ma dopo l'aggiornamento alla versione pacchettizzata di mono 2.10.5 da badgerports < / a> Non sono riuscito a farlo funzionare.

L'errore che di solito incontro è:

/home/alex/git/Solution/FSProject/FSProject.fsproj: errore: destinazione denominata "Build" non trovata nel progetto.

Quello che mi lascia perplesso è che guardando il file di progetto, non sembra che NESSUN obiettivo sia definito. Non sono un esperto di MSBuild, ma questo mi sembra un po 'strano. Detto questo, ha funzionato in precedenza.

Qualcuno ha riscontrato (e si spera abbia trovato la soluzione) problemi simili? Se possibile, mi piacerebbe essere in grado di creare la soluzione con xbuild e da Visual Studio.

L'ambiente è mint 11 (non sono sicuro che sia basato su ubuntu maverick o natty) che esegue mono 2.10.5 da badgerports. fsharp è stato installato dall'ultima sorgente al prefisso predefinito.

<”modifica

Sono riuscito ad avvicinarmi un po 'di più grazie al puntatore di Brian (ho dovuto codificare un percorso, xbuild sembra avere problemi a risolvere cose come "$ (MSBuildExtensionsPath32) .. \ FSharp \ 1.0 \ Microsoft. FSharp.Targets "). Attualmente FSC viene chiamato, anche se si lamenta di non essere in grado di risolvere il riferimento a FSharp.Core.

Ho trovato questa pagina F # e XBuild (Debian) < / a> utile per arrivare fin qui.

È stato utile?

Soluzione

Non c'è più bisogno di hackery se usi questo:

Altri suggerimenti

Quindi è venuto fuori che l'ambiente parallelo mi stava effettivamente rendendo le cose più facili. Mono installa su / usr, mentre F # installa su / usr / local, quindi avevo bisogno di impostare collegamenti simbolici per abilitare le destinazioni FSharp e le destinazioni comuni per vedersi. Questo è dettagliato qui: F # e XBuild (Debian)

Una volta impostato, avevo ancora problemi. Dopo aver aggiunto alcuni messaggi di debug, ho scoperto che xbuild non risolveva correttamente il percorso delle destinazioni F #. Il file di progetto stava tentando di importare in questo modo:

  <Import Project="$(MSBuildExtensionsPath32)\FSharp\1.0\Microsoft.FSharp.Targets" Condition="!Exists('$(MSBuildBinPath)\Microsoft.Build.Tasks.v4.0.dll')" />
  <Import Project="$(MSBuildExtensionsPath32)\..\Microsoft F#\v4.0\Microsoft.FSharp.Targets" Condition="Exists('$(MSBuildBinPath)\Microsoft.Build.Tasks.v4.0.dll')" />

e xbuild avevano problemi a risolvere il percorso relativo. Quindi l'ho appena cambiato in questo:

  <Import Project="$(TargetsPath)" Condition="$(TargetsPath) != ''" />
  <Import Project="$(MSBuildExtensionsPath32)\FSharp\1.0\Microsoft.FSharp.Targets" Condition="$(TargetsPath) == '' And !Exists('$(MSBuildBinPath)\Microsoft.Build.Tasks.v4.0.dll')" />
  <Import Project="$(MSBuildExtensionsPath32)\..\Microsoft F#\v4.0\Microsoft.FSharp.Targets" Condition="$(TargetsPath) == '' And Exists('$(MSBuildBinPath)\Microsoft.Build.Tasks.v4.0.dll')" />

che mi permette di passare il percorso a FSharp.targets sulla riga di comando.

Ci sono ancora alcuni problemi (sta fallendo con un reclamo relativo alla mancata registrazione di ItemGroups, so che questa è una debolezza in xbuild ma sembra essere un falso allarme - il progetto in effetti viene compilato ed eseguito con successo). Spero che questo aiuti qualcun altro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top