none
Сборка проекта через командную строку RRS feed

  • Вопрос

  • Необходимо собрать проект через командную строку, для этого создано решение с процедурой:

    private static void Build(string file, bool frameapp) { string error = " error "; Process proc = new Process(); proc.StartInfo.FileName = "cmd.exe"; if (!frameapp) proc.StartInfo.Arguments = cmd + @"%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /p:Configuration=Release;Platform=x86 /v:minimal /clp:Summary " + '"' + file + '"'; else proc.StartInfo.Arguments = cmd + @"%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /p:Configuration=""Release - MPPR"";Platform=x86 /v:minimal /clp:Summary " + '"' + file + '"'; proc.Start(); proc.WaitForExit();

    }

    В решении, которое нужно собирать есть проект test.csproj и setuper.vdproj

    csproj собирается, а на vdproj выдает ошибку "The project file could not be loaded. Data at the root level is invalid. Line 1, position 1."

    Подскажите, как собрать vdproj?



    • Изменено Roman7in 16 июня 2015 г. 9:04
    16 июня 2015 г. 9:04

Ответы

  • Зачем такие сложности? devenv.exe - запускаемый файл VS может собирать проекты в командной строке. Запустите эту программу с ключом /? и получите список параметров командной строки.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    16 июня 2015 г. 9:47
  • Значит сделайте так. У проекта HGoLib установите нужным сборкам "копировать локально" - они окажутся в Release этого проекта. В проекте MainProject настройте "события после сборки" с командами копирования необходимых файлов из папки Release библиотеки в папку Release MainProject. Параметры команды copy, надеюсь, знаете?

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    16 июня 2015 г. 11:45

Все ответы

  • Зачем такие сложности? devenv.exe - запускаемый файл VS может собирать проекты в командной строке. Запустите эту программу с ключом /? и получите список параметров командной строки.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    16 июня 2015 г. 9:47
  • Эта ситуация возникла не по моей прихоти.

    Имеется два решения, одно(1) использует второе(2). Проблема в том, что при построении решения 2(вернее основного проекта в этом решении), на выходе получаются не все библиотеки необходимые для работы, часть, я так понял, занесены в GAC(например DevExpress). Вот и решили сделать Setup Project который на выходе дает все нужные библиотеки. Затем все копируется в папку в 1 решении.

    Если подскажете как настроить проект, чтобы при построении выдавал абсолютно все библиотеки (в т. ч. из зависимых проектов решения) в Release, буду очень благодарен.



    • Изменено Roman7in 16 июня 2015 г. 10:42
    16 июня 2015 г. 10:37
  • Сборки, зарегистрированные в GAC, на которые есть ссылки в проекте по умолчанию не копируются в выходной каталог. Но это можно поправить. Выбираете нужную сборку в списке References и в окне свойств задаете ей "Копировать локально = true". После компиляции проекта сборки будут лежать в выходном каталоге.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    16 июня 2015 г. 11:12
  • Попробовал так сделать, не помогает.

    В решении есть проект MainProject(WinApp), у него в Referencs  находится другой проект этого решения HGoLib(ClassLibrary) у него в References находятся нужные dll из DevExpress. Нужно, чтобы при компиляции все библиотеки DevExpress помещались в Release проекта MainProject.

    Если делать через Setup Project, то он все зависимости находит и в результате выдает все, что нужно в одной папке, но возникла проблема его компиляции удаленно.

    16 июня 2015 г. 11:40
  • Значит сделайте так. У проекта HGoLib установите нужным сборкам "копировать локально" - они окажутся в Release этого проекта. В проекте MainProject настройте "события после сборки" с командами копирования необходимых файлов из папки Release библиотеки в папку Release MainProject. Параметры команды copy, надеюсь, знаете?

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    16 июня 2015 г. 11:45
  • Т.е. получается, если добавится новый проект в решении, то его придется вручную прописывать в "события после сборки"?

    Если "вложенность" проектов будет многоуровневая, нужно будет прописывать каждый проект в MainProject?

    16 июня 2015 г. 12:06
  • Т.е. получается, если добавится новый проект в решении, то его придется вручную прописывать в "события после сборки"?

    Нет, я говорю о сборках из GAC. Выходные файлы проектов-зависимостей автоматически должны копироваться в выходной каталог EXE-модуля.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    16 июня 2015 г. 13:49
  • Сейчас прописал в MainProject -> Post-build Event Command Line

    xcopy /Y /S "$(ProjectDir)\..\HGoLib\bin\x86\Release"  "$(TargetDir)"

    Библиотеки скопировались.

    Но возникает вопрос, если разработчики добавят новый проект-зависимость с новыми библиотеками в Referenses, то придется руками прописывать копирование в MainProject -> Post-build Event Command Line?

    В Setup Project все делается автоматически, вот поэтому первый вопрос был связан с компиляцией этого проекта.


    • Изменено Roman7in 16 июня 2015 г. 14:11
    16 июня 2015 г. 13:59
  • Если библиотеки тоже из GAC, то да.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    16 июня 2015 г. 14:10
  • В Setup Project все делается автоматически, вот поэтому первый вопрос был связан с компиляцией этого проекта.


    Ну, так и собирайте его с помощью devenv.exe. Это и было моим первым предложением.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    17 июня 2015 г. 8:59