Frage

Ich habe eine gemischte VS 2010-Lösung, die hauptsächlich C # ist, aber einen in F # geschriebenen Windows-Dienst enthält. Ich hatte dieses Gebäude mit xbuild in einer parallelen Umgebung, aber seit dem Upgrade auf die Paketversion von Mono 2.10.5 von badgerports < / a> Ich konnte es nicht zum Laufen bringen.

Der Fehler, auf den ich normalerweise stoße, ist:

/home/alex/git/Solution/FSProject/FSProject.fsproj: Fehler: Ziel mit dem Namen 'Build' wurde im Projekt nicht gefunden.

Was mich verwundert, ist, dass beim Betrachten der Projektdatei keine Ziele definiert sind. Ich bin kein Experte für MSBuild, aber das kommt mir etwas seltsam vor. Davon abgesehen hat es vorher funktioniert.

Hat jemand ähnliche Probleme gefunden (und hoffentlich die Lösung dafür gefunden)? Wenn möglich, möchte ich die Lösung mit xbuild und in Visual Studio erstellen können.

Umgebung ist Mint 11 (nicht sicher, ob dies auf Ubuntu Maverick oder Natty basiert), auf dem Mono 2.10.5 von Badgerports ausgeführt wird. fsharp wurde von der neuesten Quelle mit dem Standardpräfix installiert.

edit

Dank Brians Zeiger konnte ich ein wenig näher kommen (ich musste einen Pfad hart codieren, xbuild scheint Probleme beim Auflösen von Dingen wie "$ (MSBuildExtensionsPath32) .. \ FSharp \ 1.0 \ Microsoft" zu haben. FSharp.Targets "). FSC wird derzeit tatsächlich aufgerufen, beschwert sich jedoch, dass der Verweis auf FSharp.Core nicht aufgelöst werden kann.

Ich habe diese Seite gefunden F # und XBuild (Debian) < / a> hilfreich, um so weit zu kommen.

War es hilfreich?

Lösung

Wenn Sie Folgendes verwenden, ist kein Hackery mehr erforderlich:

Andere Tipps

Es stellt sich also heraus, dass die parallele Umgebung mir die Dinge tatsächlich leichter gemacht hat. Mono wird unter / usr installiert, während F # unter / usr / local installiert wird. Daher musste ich Symlinks einrichten, damit FSharp-Ziele und Common-Ziele einander sehen können. Dies wird hier detailliert beschrieben: F # und XBuild (Debian)

Nachdem dies eingerichtet war, hatte ich immer noch Probleme. Nachdem ich einige Debug-Meldungen hinzugefügt hatte, stellte ich fest, dass xbuild den Pfad zu F # -Zielen nicht korrekt auflöste. Die Projektdatei versuchte wie folgt zu importieren:

  <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')" />

und xbuild hatten Probleme beim Auflösen des relativen Pfads. Also habe ich es einfach so geändert:

  <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')" />

Damit kann ich den Pfad zu FSharp.targets in der Befehlszeile übergeben.

Es gibt immer noch einige Probleme (es schlägt fehl, wenn eine Beschwerde über die Nichtregistrierung von ItemGroups vorliegt. Ich weiß, dass dies eine Schwachstelle in xbuild ist, aber es scheint ein Fehlalarm zu sein - das Projekt wird tatsächlich erfolgreich erstellt und ausgeführt). Hoffe, das hilft jemand anderem.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top