2009-06-23 5 views
0

J'essaie de faire fonctionner MSBuild sur un projet qui vient d'être déplacé sur TFS2008. La solution était énorme, donc elle a été divisée en 5 projets d'équipe, A-E. Chacun a une seule solution mais plusieurs projets. A est convaincu que B-E est construit en premier. Nous avons besoin de construire à la fois des versions debug et release de tout, ce qui est bien, mais quand nous compilons A en mode release, il utilise les versions debug de B-E. Après avoir regardé dans les fichiers proj des projets dans A, leurs références d'assemblage ont été définies pour pointer vers les versions de débogage des bibliothèques dans B-E. Est-il possible d'utiliser un fichier proj MSBuild pour rendre la version de A référence aux versions de projets de B-E? Jusqu'à présent, j'ai essayé d'ajouter
<PropertyGroup>
<AssemblySearchPaths>
$(Configuration)
$(AssemblySearchPaths)
</AssemblySearchPaths>
</PropertyGroup>
au fichier projet MSBuild, mais cela ne fait aucune différence. Aucune suggestion?Comment faire pour que MSBuild référence les bons assemblages?

Répondre

3

(Ceci est une réponse alternative si vous voulez faire tout ce qu'il dans vos fichiers .prof)

Vous pouvez définir le chemin de référence sur chacun des groupes de propriétés pour les différentes configurations.

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
    <ReferencePath>c:\blah\blah\Path\To\Debug\</ReferencePath> 
</PropertyGroup>

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <ReferencePath>c:\blah\blah\Path\To\Release\</ReferencePath> </PropertyGroup>

Vous devriez déjà avoir les groupes de propriétés conditionnelles dans le fichier .proj, il suffit donc de leur ajouter le bit de chemin refernece. Vous pouvez avoir plusieurs chemins en les séparant avec des points-virgules.

2

Je pense que vous pouvez le faire:

<PropertyGroup> 
    <SomeReferencePath>..\Your\Other\Build\Path\</LibraryReference> 
</PropertyGroup>
ensuite inclure cela dans l'objectif:
Properties="ReferencePath=$(SomeReferencePath)"
Cela va demander au compilateur de regarder dans cette voie de référence pour le résoudre est référencé assemblées.

Je pense = :)

[Edit: cela tous aller dans un nouveau script msbuild qui construit tous vos sous-projets.]

+0

Ahh. Accrochez-vous, vous parlez des fichiers .proj. Pardon. Ce que je ferais faire est de créer un nouveau script msbuild qui construit tous les projets. Vous pouvez le faire en ayant une cible pour chaque projet que vous voulez construire. Vous devez ensuite définir le chemin de référence sur chaque cible pour chaque projet. Comme j'ai mis dans cette réponse. (J'ai aussi posté une autre réponse pour une autre façon possible de le faire que vous préférez) –

+0

@Barn: Hey, vous avez supprimé votre commentaire. Maintenant j'ai juste l'impression de me parler à moi-même. = :) Hmm ... Peut-être que je suis ... Moi ... Fou ... Nah ... –

Questions connexes