2009-05-08 6 views
1

J'ai 2 projets C# dans ma solution, les deux d'entre eux: DLLsMSBuild: Comment remplacer le nom de fichier de sortie pour qu'il soit différent du nom d'assembly?

  • MyApp.UI.WPF.csproj
  • MyApp.UI.WinForms.csproj

Mes garanties d'une procédure d'installation qui un seul d'entre eux sera installé à un moment donné. Quoi qu'il en soit, il sera récupéré par le programme d'amorçage MyApp.exe lorsque l'utilisateur exécute l'application.

Puisque les deux DLL contiennent le même point d'entrée, je voudrais garder le générique bootstrapper:

class Bootstrapper 
{ 
    static void Main() 
    { 
     var asm = Assembly.Load("MyApp.UI"); 

     // Execute the UI entry point here. 
    } 
} 

Cela signifie que je dois donner les deux DLL le même nom de l'Assemblée dans les options du projet: « MyApp.UI ". Le problème est que MSBuild utilise le nom d'assembly comme nom de sortie qui pose un conflit pour moi.

Est-il possible de convaincre MSBuild d'utiliser un autre nom de fichier à la place, par ex. le nom du projet?

Répondre

2

Vous pouvez ajouter un <PostBuildEvent> à votre build pour renommer vos assemblys de sortie en un nom commun.

+0

C'est ce que j'ai fini par faire. J'ai également ajouté un événement de pré-construction qui supprime le fichier cible s'il existe déjà. Renommer échouerait parfois sans cela. – aoven

1

Cela serait une fonction de la tâche CoreCompile, vous auriez à la surcharger pour modifier le commutateur/out sur csc. Cette pratique n'est pas recommandée mais permettrait d'atteindre votre objectif.

Questions connexes