Командная строка компиляции приложения Win Forms C # - PullRequest
2 голосов
/ 02 апреля 2009

Я пытаюсь создать скрипт для компиляции проекта Windows Forms C # 2.0 из командной строки (я знаю, я знаю ... я заново изобретаю колесо ... снова ... но если кто-то знает ответ, я буду признателен)

Проект представляет собой стандартный проект Windows Forms, который имеет некоторые ресурсы и ссылается на пару внешних сборок. Вот список файлов:

    Program.cs                  // no need to expand on this on :)
    frmMain.cs                  // this is a typical C# windows forms file
    frmMain.designer.cs         //  .. and the designer code
    frmMain.resx                //  .. and the resource file
    MyClasses.cs                // this contains a couple classes
    Properties\AssemblyInfo.cs        // the Properties folder -- again pretty standard 
    Properties\Resources.Designer.cs
    Properties\Resources.resz
    Properties\Settings.Designer.cs
    Properties\Settings.settings
    References\AnAssembly.dll   // an assmebly that I reference from this application

На данный момент я определил следующие программы / инструменты, которые мне понадобятся:

    csc.exe      //  the C# compiler
    al.exe       //  the assembly linker
    resgen.exe   //  the resource compiler

И это мой сценарий:

    @echo off
    set OUT=Out
    set AL=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\al.exe
    set RESGEN="C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\resgen.exe"
    set COMPILER=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe

    echo.
    echo Compiler: %COMPILER%
    echo.

    if "%1"=="/help" goto help

    :start
    echo Starting...

    set REFERENCES=.\References\AReferencedll
    set SRCFILES=Program.cs frmMain.cs frmMain.designer.cs MyClasses.cs Properties\AssemblyInfo.cs Properties\Resources.Designer.cs Properties\Settings.Designer.cs

    del /Q %OUT%\*

    %RESGEN% /compile frmMain.resx,%OUT%\frmMain.resources 

    cd Properties

    %RESGEN% /compile Resources.resx,..\%OUT%\Resources.resources

    cd ..

    %COMPILER% /target:module /out:%OUT%\app.module %SRCFILES% /reference:%REFERENCES%

    %AL% %OUT%\app.module /embed:%OUT%\frmMain.resources /target:winexe /out:%OUT%\app.exe /main:App.Program.Main

    goto done
    :error
    echo Ooooops!

    :done
    echo Done!!

В конце концов, независимо от того, как я его раскручиваю, компоновщик получает разные ошибки, иначе конечный исполняемый файл просто не запустится - он вылетит.

Пожалуйста, помогите (MSDN не слишком помог ..)!

Ответы [ 3 ]

8 голосов
/ 02 апреля 2009

Мне нравится обманывать подобные вещи. Возьмите рабочий проект и выполните на нем следующую команду

msbuild Project.csproj /t:rebuild /clp:ShowCommandLine

Вывод этого покажет вам команду msbuild, используемую для компиляции проекта, которую вы можете затем взять и изменить по своему усмотрению.

2 голосов
/ 02 апреля 2009

Есть ли причина, по которой вы не используете msbuild? Он может скомпилировать любой визуальный студийный проект / решение в одну команду ...

msbuild.exe <solution filename>
1 голос
/ 02 апреля 2009

Просто используйте MSBuild , передавая файл решения или проекта.

Лучший способ использовать MSBuild - через командную строку Visual Studio; он устанавливает все необходимые переменные среды для вас. Эта команда настройки также доступна в SDK.

...