2010-06-11 12 views

Respuesta

1

Haga clic derecho en el proyecto, Agregue + Nuevo elemento, seleccione Archivo de texto, asígnele el nombre Blah.mc. Ingrese o pegue las definiciones. Haga clic con Blah.mc, propiedades, estructura de encargo paso: la línea

  • Comando = mc $ (InputPath)
  • Salidas = $ (InputName) .rc

editar el archivo .rc, agregar:

#include "Blah.rc" 

Funcionó para mí, debería estar cerca.

+0

Prgress, pero quiso decir: línea de comandos = mc (InputName) .mc Salidas = $ (InputName) .rc $; $ (InputName) .h Independientemente, esto da el error: mc: error: 0x2 tratando de abrir el archivo <.mc>. – EMS

+0

OK, estoy empezando a pensar que hay un problema mayor. Realizo un TextFile.txt, luego configuré: Línea de comando = echo "InputDir =" $ (InputDir) "InputName =" $ (InputName)> TextOut.txt Salidas = TextOut.txt TextOut.txt no contiene el $ (xxx) macro expansiones. No se ve bien – EMS

+0

No estoy seguro de lo que está haciendo. Asegúrese de que la extensión del nombre de archivo sea .mc, no .txt –

0

Si desea utilizar una regla de generación personalizada, puede hacerlo

  • Haga clic derecho en el proyecto en Visual Studio -> reglas de generación personalizada
  • Haga clic en "Nuevo archivo de reglas" y rellene el siguiente campos, puedo usar este archivo de reglas para 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 Passant casi estaba en lo cierto. Por desgracia, $ (InputPath) y $ (InputName) no están definidos en VS 2010. En su lugar, crear su archivo de mensajes:

  • Haga clic derecho en su proyecto-> Add-> Nuevo elemento
  • Seleccione "Texto Archivo (.txt), pero nómbrelo como un archivo ".mc" (como "messages.mc")
  • Cree un archivo de recursos (por ejemplo, "resources.rc")
  • Edite el archivo de recursos de modo que contenga solo una línea:

#include "messages.rc"

Ese archivo será generado por el compilador de mensajes. Ahora agregue un paso de compilación personalizado para ejecutar el compilador de mensajes:

  • Haga clic derecho en messagess.mc y seleccione Propiedades.
  • En el cuadro de diálogo Propiedades, configure Configuración en "Todas las configuraciones".
  • En "Propiedades de configuración", haga clic en "General".
  • Asegúrese de que la propiedad "Excluido de compilación" esté establecida en "No".
  • Establezca la propiedad "Tipo de elemento" en "Herramienta de creación personalizada" en el menú desplegable y haga clic en el botón "Aplicar" para que aparezca la propiedad "Herramienta de creación personalizada".
  • Haga clic en "General" debajo de la propiedad "Custom Build Tool".
  • establecer la propiedad "línea de comandos" a:

    mc %(FullPath)

  • Establecer la propiedad Description a algo así como "Mensajes Compilar ..."

  • propiedad Ajuste Sal a:

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

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

LanguageNames = (English=0x409:MSG00409)

Puede haber un archivo bin para cada idioma que agregue a messages.mc. Lo bueno de enumerarlos en el resultado es que se eliminará cuando se limpie el proyecto.

Lo único que no estoy seguro es establecer la propiedad "Ejecutar antes" para garantizar que se genere messages.rc antes de compilar resource.rc. No tuve que configurarlo, pero si el compilador de recursos intenta ejecutar antes del compilador de mensajes, entonces deberá establecer esta propiedad. Está deshabilitado para el archivo "messages.mc", pero se puede configurar en la propiedad "Paso de compilación personalizada" del proyecto.

+1

Si su proyecto ya tiene un archivo .rc, simplemente puede agregar '1 11" MSG00409.bin "' a él –

+0

¿cuál es el uso del archivo .bin si se incluye de alguna manera? –

+3

si tiene espacios en FullPath, luego use mc "% (FullPath)" –

0

En el caso custom compiler no es un requisito, sino más información sobre cómo hacer que cree archivos .rc desde MSBuild. El WDK MessageCompiler task ofrece esta integración con MSBuild

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