2010-06-11 9 views

Odpowiedz

1

Kliknij projekt prawym przyciskiem myszy, Dodaj nowy element, wybierz Plik tekstowy, nadaj mu nazwę Blah.mc. Wprowadź lub wklej definicje. Kliknij prawym przyciskiem myszy Blah.mc, właściwości niestandardowej etap produkcji: linię

  • polecenia = mc $ (InputPath)
  • Wyjścia = $ (InputName) .RC

edytować plik .RC, dodaj:

#include "Blah.rc" 

Pracowałem dla mnie, powinienem być blisko.

+0

Prgress, ale miałeś na myśli: linia poleceń = mc $ (InputName) .mc Wyjścia = $ (InputName) .RC; $ (InputName) .h Bez względu na to, powoduje to błąd: mc: error: 0x2 próbuje otworzyć plik <.mc>. – EMS

+0

OK, zaczynam myśleć, że jest większy problem. Tworzę plik TextFile.txt, a następnie skonfigurowano: Wiersz poleceń = echo "InputDir =" $ (InputDir) "InputName =" $ (InputName)> TextOut.txt Wyjścia = TextOut.txt TextOut.txt nie zawiera Rozszerzenia makro ($ xxx). Nie wygląda dobrze. – EMS

+0

Nie jesteś pewien, co robisz. Upewnij się, że rozszerzenie nazwy pliku to .mc, a nie .txt –

0

Jeśli chcesz użyć niestandardową regułę budować, można to zrobić

  • prawym przyciskiem myszy projekt w Visual Studio -> Niestandardowe utworzyć reguły
  • kliknij „Nowa reguła Plik” i wypełnić Pola, używam tego pliku reguł dla 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 prawie miał rację. Niestety, $ (InputPath) i $ (InputName) nie są zdefiniowane w VS 2010. Zamiast tworzyć plik wiadomość:

  • prawym przyciskiem myszy na swojej Project-> Add-> New Item
  • Wybierz „Text Plik (.txt), ale nazwij go jako plik ".mc" (np. "Messages.mc")
  • Utwórz plik zasobów (powiedz: "resources.rc")
  • Edytuj plik zasobów, tak aby zawierał tylko jedna linia:

#include "messages.rc"

Ten plik zostanie wygenerowany przez kompilator wiadomości. Teraz dodaj niestandardowy krok kompilacji, aby uruchomić kompilator komunikatów:

  • Kliknij prawym przyciskiem myszy na messages.mc i wybierz Właściwości.
  • W oknie dialogowym Właściwości ustaw opcję Konfiguracja na "Wszystkie konfiguracje".
  • W "Właściwości konfiguracji" kliknij "Ogólne".
  • Upewnij się, że właściwość "Wykluczono z kompilacji" jest ustawiona na "Nie".
  • Ustaw właściwość "Typ artykułu" na "Niestandardowe narzędzie do tworzenia" z rozwijanego menu i kliknij przycisk "Zastosuj", aby wyświetlić właściwość "Niestandardowe narzędzie do budowania".
  • Kliknij "Ogólne" w polu "Własne narzędzie budowy".
  • Ustaw właściwość "Command Line" do:

    mc %(FullPath)

  • Ustaw właściwość Opis coś jak "tworzonych wiadomości ..."

  • właściwość ustawiania wyjść do:

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

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

LanguageNames = (English=0x409:MSG00409)

Może istnieć plik bin dla każdego języka dodawanego do messages.mc. Miłą częścią umieszczania ich w wynikach jest to, że zostaną one usunięte po oczyszczeniu projektu.

Jedyną rzeczą, której nie jestem pewien, jest ustawienie właściwości "Execute Before", aby zagwarantować, że messages.rc zostanie wygenerowany przed skompilowaniem resource.rc. Nie musiałem go ustawiać, ale jeśli kompilator zasobów próbuje znaleźć się przed kompilatorem wiadomości, musisz ustawić tę właściwość. Jest wyłączony dla pliku "messages.mc", ale można go ustawić we właściwości "Niestandardowy krok budowania" projektu.

+1

Jeśli twój projekt ma już plik .rc, możesz po prostu dodać "1 11" MSG00409.bin "" do niego –

+0

jaki jest pożytek z pliku .bin, który powinien być w jakiś sposób uwzględniony? –

+3

jeśli masz spacje w FullPath, użyj mc "% (FullPath)" –

0

W przypadku, gdy custom compiler nie jest wymogiem, ale bardziej jak sprawić, by budował pliki .rc z MSBuild. WDK MessageCompiler task oferuje tę integrację z MSBuild

<ItemGroup> 
    <MessageCompile Include="a.mc"> 
     <GenerateBaselineResource>true</GenerateBaselineResource> 
     <BaselineResourcePath>c:\test\</BaselineResourcePath> 
    </MessageCompile> 
    </ItemGroup> 
Powiązane problemy