2010-06-11 7 views

Répondre

1

Cliquez avec le bouton droit sur le projet, Ajouter + Nouvel élément, sélectionnez Fichier texte, nommez-le Blah.mc. Entrez ou collez les définitions. Faites un clic droit Blah.mc, Propriétés, étape de construction personnalisée:

  • ligne de commande = mc $ (InputPath)
  • Sorties = $ (InputName) .rc

Modifier votre fichier .rc, ajouter:

#include "Blah.rc" 

Travaillé pour moi, devrait être proche.

+0

Prgress, mais avez-vous dire: ligne de commande = mc $ (InputName) .mc Sorties = $ (InputName) .rc; $ (InputName) .h Quoi qu'il en soit, cela donne l'erreur: mc: erreur: 0x2 en essayant d'ouvrir le fichier <.mc>. – EMS

+0

OK, je commence à penser qu'il y a un plus gros problème. Je crée un TextFile.txt, puis configuré: Ligne de commande = echo "InputDir =" $ (InputDir) "InputName =" $ (InputName)> TextOut.txt Sorties = TextOut.txt TextOut.txt ne contient pas le $ (xxx) macro expansions. Ne semble pas juste. – EMS

+0

Vous ne savez pas ce que vous faites. Assurez-vous que l'extension du nom de fichier est .mc, pas .txt –

0

Si vous souhaitez utiliser une règle de construction personnalisée, vous pouvez le faire

  • Faites un clic droit de votre projet dans Visual Studio -> Personnaliser les règles de constructions
  • Cliquez sur « Nouvelle règle Fichier » et remplir le champs, j'utiliser ce fichier de règles pour MC.EXE

    <VisualStudioToolFile Name="Message Table Build Rule" Version="8.00"> 
        <Rules> 
        <CustomBuildRule 
         Name="Message Table Build Rule" 
         DisplayName="Message Table Build Rule" 
         CommandLine="[Location]\mc.exe [Unicode] [Verbose] [Inputs]" 
         Outputs="Message Table Build Rule" 
         FileExtensions="*.mc" 
         ExecutionDescription="Message Table Build Rule" 
         > 
         <Properties> 
         <BooleanProperty 
          Name="Verbose" 
          DisplayName="Verbose mode" 
          Description="Foo." 
          Switch="-v" 
         /> 
         <BooleanProperty 
          Name="Unicode" 
          DisplayName="Unicode mode" 
          Description="Bar." 
          Switch="-u" 
         /> 
         <StringProperty 
          Name="Location" 
          DisplayName="Location" 
          Description="Baz." 
          Switch="[value]" 
          DefaultValue="C:\Bin\Psdk\Bin" 
         /> 
         </Properties> 
        </CustomBuildRule> 
        </Rules> 
    </VisualStudioToolFile> 
    
22

Hans presque l'avait Passant droit. Malheureusement, $ (InputPath) et $ (InputName) ne sont pas définis dans VS 2010. Au lieu de cela, créez votre fichier de message:

  • Faites un clic droit sur votre Projet-> Ajouter-> Nouvel élément
  • Sélectionnez « Texte Fichier (.txt), mais nommez-le en tant que fichier ".mc" (comme "messages.mc")
  • Créez un fichier de ressources (par exemple, "resources.rc")
  • Modifiez le fichier de ressources afin qu'il contienne une seule ligne:

#include "messages.rc"

Ce fichier sera généré par le compilateur de message. Maintenant, ajoutez une étape de génération personnalisée pour exécuter le compilateur de message:

  • Cliquez avec le bouton droit sur messages.mc et sélectionnez Propriétés.
  • Dans la boîte de dialogue Propriétés, configurez la configuration sur "Toutes les configurations".
  • Sous "Propriétés de configuration", cliquez sur "Général".
  • Assurez-vous que la propriété "Excluded From Build" est définie sur "No".
  • Définissez la propriété "Type d'élément" sur "Outil de construction personnalisé" dans le menu déroulant et cliquez sur le bouton "Appliquer" pour que la propriété "Outil de construction personnalisé" s'affiche.
  • Cliquez sur "Général" dans la propriété "Custom Build Tool".
  • Définissez la propriété "ligne de commande" à:

    mc %(FullPath)

  • Définissez la propriété Description à quelque chose comme "Messages ... Compiler"

  • Définir la propriété Sorties à:

    %(Filename).rc;%(Filename).h;MSG0409.bin

The file MSG00409.bin is from having the following line in messages.mc:

LanguageNames = (English=0x409:MSG00409)

Il peut y avoir un fichier bin pour chaque langue que vous ajoutez à messages.mc. La bonne partie de les énumérer dans la sortie est qu'il sera supprimé lorsque le projet est nettoyé. La seule chose dont je ne suis pas sûr est la définition de la propriété "Execute Before" pour garantir que les messages.rc sont générés avant la compilation de resource.rc. Je n'ai pas eu à le définir, mais si vous trouvez que le compilateur de ressources essaye de s'exécuter avant le compilateur de message, alors vous devrez définir cette propriété. Il est désactivé pour le fichier "messages.mc", mais il peut être défini dans la propriété "Custom Build Step" du projet.

+1

Si votre projet a déjà un fichier .rc, vous pouvez simplement ajouter '1 11" MSG00409.bin "' à –

+0

quelle est l'utilisation du fichier .bin s'il est inclus? –

+3

si vous avez des espaces dans FullPath, alors utilisez mc "% (FullPath)" –

0

Dans le cas custom compiler n'est pas une exigence, mais plutôt comment faire construire des fichiers .rc à partir de MSBuild. Le WDK MessageCompiler task offre cette intégration avec MSBuild

<ItemGroup> 
    <MessageCompile Include="a.mc"> 
     <GenerateBaselineResource>true</GenerateBaselineResource> 
     <BaselineResourcePath>c:\test\</BaselineResourcePath> 
    </MessageCompile> 
    </ItemGroup> 
Questions connexes