Utiliser une seule solution Visual Studio pour créer les deux x86 et x64 en même temps?

J'ai un x86 solution Visual Studio avec de nombreux fichiers de projet dans ce. Certains de Dll sont conçus pour fonctionner comme des plugins pour d'autres applications sur le système d'un utilisateur. Nous sommes en train d'agrandir certains de la Dll pour être en mesure de soutenir les applications 64 bits. Ce que je voudrais faire est de configurer la solution/les projets de manière juste de cliquer sur "Build" va construire à la fois les versions x86 et x64 de ces Dll. La solution contient à la fois le C++ et C# de projets. Je me rends compte que "Lot Build" est capable de construire à la fois, même si ce serait plus pratique si les développeurs pouvaient juste cliquez sur le même bouton, comme ils l'ont déjà et ont tous de la sortie Dll générée.

Voici quelques modifications que j'ai essayé à un projet de test, mais je n'ai pas eu l'occasion de travailler:

J'ai essayé de modifier le <Target Name="AfterBuild"> à essayer:

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

mais que les résultats dans l'erreur suivante:

C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(565,5): erreur MSB4006: Il y a une dépendance circulaire dans le graphe de dépendance des cibles impliquant cible "Construire".

Je pense que mes conditions permettra d'éviter une récursion infinie, mais je comprends comment MSBuild ne pouvais pas le voir de cette façon.

J'ai aussi essayé:

<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>

mais mon DefaultTargets semble être ignorée de l'IDE de Visual Studio.

Dernière, j'ai essayé de créer un projet distinct que les importations du premier projet:

<?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>

et ce jusqu'à présent, a montré la plus prometteuse. Toutefois, Visual Studio semble ignorer mon OutputPath réglage de ce nouveau projet et à la place des sorties de l'exe/dll pour le chemin d'accès spécifié dans le projet initial. Il n'y a pas PropertyGroup bloc que je peux voir qui est en cours d'exécution dans le projet d'origine pour remplacer ce, donc je ne suis pas sûr de ce qui se passe.

InformationsquelleAutor PeteVasi | 2009-10-15