Verwenden Sie eine einzelne Visual Studio-Lösung, um sowohl x86 als auch x64 gleichzeitig zu erstellen?

Ich habe ein x86-Visual Studio-Lösung mit vielen Projekt-Dateien. Einige DLLs sind entworfen, um arbeiten wie plugins für andere Anwendungen auf dem system eines Benutzers. Wir bauen einige der DLLs zu können, die Unterstützung von 64-bit-Anwendungen. Was ich tun möchte ist, das setup der Lösung/Projekte so, dass Sie nur auf "Build" bauen sowohl die x86-und x64-Versionen dieser DLLs. Die Lösung enthält C++ - und C# - Projekte. Ich merke, dass "Batch Build" ist in der Lage beide, obwohl es bequemer wäre, wenn die Entwickler könnten einfach auf die gleiche Taste wie Sie zuvor, und alle Ausgabe-DLLs generiert.

Hier ein paar der änderungen, ich habe versucht, ein test-Projekt, aber nicht bekommen, um zu arbeiten:

Habe ich versucht, das ändern der <Target Name="AfterBuild"> zu versuchen:

<Target Name="AfterBuild" Condition=" '$(Platform)' == 'x86' ">
  <PropertyGroup>
    <Platform>x64</Platform>
    <PlatformTarget>x64</PlatformTarget>
  </PropertyGroup>
  <CallTarget Targets="Build"/>
</Target>

aber, dass die Ergebnisse in die folgende Fehlermeldung:

C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(565,5): Fehler MSB4006: Es ist eine zirkuläre Abhängigkeit in der Ziel-dependency-graph mit Ziel "Bauen".

Ich denke, dass meine Bedingungen verhindern eine unendliche Rekursion, aber ich verstehe, wie MSBuild konnte es nicht sehen, dass Weg.

Habe ich auch versucht:

<Project DefaultTargets="MyBuild86;MyBuild64" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
...
<Target Name="MyBuild86">
  <PropertyGroup>
    <Platform>x86</Platform>
    <PlatformTarget>x86</PlatformTarget>
  </PropertyGroup>
  <CallTarget Targets="Build"/>
</Target>
<Target Name="MyBuild64">
  <PropertyGroup>
    <Platform>x64</Platform>
    <PlatformTarget>x64</PlatformTarget>
  </PropertyGroup>
  <CallTarget Targets="Build"/>
</Target>

aber meine DefaultTargets scheint, um ignoriert zu werden von innerhalb der IDE von Visual Studio.

Letzte, ich habe versucht, erstellen Sie ein separates Projekt, dass die Einfuhren das erste Projekt:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform>x64</Platform>
    <PlatformTarget>x64</PlatformTarget>
    <ProductVersion>9.0.30729</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <OutputPath>..\$(Configuration)\x64\</OutputPath>
    <ProjectGuid>{A885CAC3-2BBE-4808-B470-5B8D482CFF0A}</ProjectGuid>
  </PropertyGroup>
  <Import Project="BuildTest.csproj" />
</Project>

dieser so weit hat gezeigt, die meisten Versprechen. Jedoch Visual Studio scheint zu ignorieren, mein OutputPath Einstellung von diesem neuen Projekt, und statt dessen die Ausgänge der exe/dll auf dem angegebenen Pfad in das ursprüngliche Projekt. Es gibt keine PropertyGroup block, dass ich sehen kann, der ausgeführt wird in dem ursprünglichen Projekt zu überschreiben, also ich bin mir nicht sicher, was passiert.

InformationsquelleAutor der Frage PeteVasi | 2009-10-15

Schreibe einen Kommentar