2010-06-15 16 views
7

Ich habe eine .NET-Lösung mit einer verwalteten C++ Assembly Targeting .NET 3.5 erstellt mit VS2010. Der Befehl:So erstellen Sie ein VS2010-C++ - Projekt auf einem BuildServer

%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe MyProject.sln 

kompiliert die Lösung auf meinem Dev-Computer.

Auf meinem Build bekomme ich diesen Fehler:

Build FAILED.

"F:\CruiseControl.NET\Projects\MyProject\MyProject.sln" (default target) (1) -> "F:\CruiseControl.NET\Projects\MyProject\MyProject\MyProject.csproj" (default target) (2) -> "F:\CruiseControl.NET\Projects\MyProject\MyProjectMAPIHelper\MyProjectMAPIHelper.vcxproj" (default target) (3) ->
F:\CruiseControl.NET\Projects\MyProject\MyProjectMAPIHelper\MyProjectMAPIHelper.vcxproj(23,3): error MSB4019: The imported project "C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.Default.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

0 Warning(s) 
1 Error(s) 

Auf meiner Dev-Maschine, die beanspruchte Datei

"C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.Default.props"

existiert. Auf meinem Build-Server nicht.

Wenn ich versuche, diese Dateien (und alle anderen im selben Verzeichnis) zu kopieren, sind andere Fehler aufgetreten. Das ist also der falsche Weg.

BEARBEITEN: andere Fehler bedeutet: Wenn ich die Datei "Microsoft.Cpp.Default.props" auf dem Build-Server kopieren, beansprucht MSBuild andere Dateien. Das zeigt mir, dass das Erstellen einer Kopie fehlender Dateien nicht das ist, was die Build-Umgebung erwartet. Ich bin auf der Suche nach einem MSI/was auch immer Paket, das ich auf meinem Build-Server installieren könnte und jedes C++ - Projekt erstellen wird. Das Installieren des SDK hat den Trick nicht ausgeführt. Oder ich habe während der SDK-Installation etwas falsch gemacht. Oder es ist nicht möglich, Managed C++ VS2010-Lösungen nur mit dem SDK zu kompilieren.

Ich glaube, dass "andere Fehler" nichts mit meinem Problem zu tun haben. Mein Problem ist: "Wie richte ich meine Build-Umgebung korrekt ein?" /EDIT

Was ich bisher getan:

  • ich die neueste Win7 SDK installiert haben (http://blogs.msdn.com/b/windowssdk/archive/2010/05/25/released-windows-sdk-for-windows-7-and-net-framework-4.aspx)
  • ich .net 3.5
  • bin Targeting Ich habe versucht, mit dem Spielen Die Platform Toolset-Eigenschaft - aber es wurde gerade
  • In meiner Lösung gibt es eine verwaltete C++ - Assembly (mein Problem)
  • Ich verwende MSBuild 4.0, weil Die neuen VS2010-Projektdateien können nicht mit MSBuild 3.5
  • kompiliert werden. Ich verwende CC.NET. Kompilierung schlägt in CC.NET und in der Befehlszeile fehl. Es sollte also kein CC.NET-Problem sein.

Gibt es irgendwelche Tipps und Tricks, wie mein Projekt richtig konfigurieren, auf meinem dev Maschine mit VS2010 und auf meinem Build-Server zu kompilieren? Gibt es noch etwas zu installieren (außer VS2010)?

Danke, Arthur

+0

Frage: Sind Sie in CC.Net festgefahren oder haben Sie die Möglichkeit, auf etwas anderes zu aktualisieren? – Caladain

+2

Ich glaube nicht, dass ich auf eine andere wechseln werde. Die Technologie der kontinuierlichen Integration wird alles verändern. Wie Arthur sagt, scheitert Build mit MSBuild. Dies scheint ein Problem mit .Net 4.0 zu sein, das stärker an SDK 7.0A gebunden ist, als es sein sollte. –

+0

Ja, das stimmt. Kompilieren schlägt in der Befehlszeile mit MSBuild fehl. CC.NET ist noch nicht beteiligt. – Arthur

Antwort

4

Vorerst Installation VS 2010 die einzige sichere Option ist. Das Windows SDK wird aktualisiert, um Ihr Szenario zu aktivieren, aber ich habe kein bestimmtes Veröffentlichungsdatum. Bis dahin müssen Sie VS 2010 mit den C++ - Tools installieren, um Ihre 2010-Lösung mit C++ - Projekten zu erstellen. Stellen Sie sicher, dass Sie das C++ - Team über ihre team blog und/oder MSDN Forum über die Unzufriedenheit mit dieser Situation informieren.

Auch nach der Installation von VS 2010 müssen Sie möglicherweise die entsprechende vcvars * .bat-Datei aufrufen, um Ihre Umgebungsvariablen korrekt einzurichten.

+0

Traurige Nachrichten. Wenn die Installation von SDK nicht funktioniert, muss ich VS 2010 auf meinem Build-Rechner installieren. Traurig, aber offensichtlich wahr. – Arthur

+1

Nach vielen Schmerzen habe ich festgestellt, dass das 7.1 SDK das erforderliche Setup * installiert * wenn * Sie während der Installation die richtigen Optionen auswählen und versuchen Sie nicht, sich selbst zu überlisten :). Siehe die kurze Antwort zu http://stackoverflow.com/questions/4742325/how-to-build-a-vs2010-makefile-project-vcxproj-with-tfs-build-no-vs-2010/4768328#4768328 – BlueMonkMN

+0

How Ist diese Antwort akzeptabel? Der Zweck eines Build-Servers ist es NICHT, Visual Studio zu installieren ... @BlueMonkMN: Gibt es einen Rechner mit Windows 7 oder einer Server-Version? – Brandon

1

Warum wollen Sie nicht VS2010 auf dem Build-Server installieren? Wenn es lizenziert wird, ist es pro Entwickler Kopf nicht pro Installation lizenziert, so dass ich ziemlich sicher bin, dass Sie ohne eine weitere Kopie kaufen dürfen - oder im schlimmsten Fall können Sie die Express-Version installieren, die mindestens die Config-Bits installieren sollte fehlt, damit Sie den Plattform-SDK-Compiler verwenden können.

Wenn Sie immer noch Probleme mit Msbuild haben, können Sie dann devenv.com /build verwenden, die den VS Build env genau replizieren.

+2

Die Installation von VS2010 wird meine letzte Option sein. – Arthur

+0

@Rup Die Installation von VS auf einem Build-Server ist eine schreckliche Idee. Es ist genau das Gegenteil von dem, was ein Build-Server ist - Bereitstellung einer sauberen, kundenähnlichen Umgebung (vorhandene DLLs usw.). Wenn Sie glauben, dass die Installation von VS auf dem Build-Server kein Problem darstellt, müssen Sie auch vorschlagen, VS auf jeder Kundenbox zu installieren. – mafu

+0

@mafutrct Ich sehe, woher du kommst, aber es gibt keinen Grund, die Anwendung auf deinem Build-Server zu hosten und zu testen! Damals, als ich schrieb, dass unsere Umgebung ein Build-Server für Komponententests und einige Integrationstests war, aber eine automatische Bereitstellung auf einem anderen Server (der nicht über VS verfügte) für echte Tests. – Rup

Verwandte Themen