Рейтинг:
5
I See Sharp
Я пришел с этим обходным путем:
1. Я создаю .bat-файл.
2. Я пишу в нем команд.
3. Наконец, я запускаю файл. bat как процесс.
StreamWriter w = new StreamWriter(@"C:\temp\publish.bat");
w.WriteLine(@"call ""C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat""");
w.WriteLine(@"call cd ""C:\Users\Johan\Documents\Visual Studio 2008\Projects\CCOSApp""");
w.WriteLine(@"call msbuild /target:Build /p:BuildingProject=true;OutDir=C:\Temp\build");
w.WriteLine("call ccosapp.sln");
w.Close();
System.Diagnostics.Process proc = new System.Diagnostics.Process();
ProcessStartInfo psi = new ProcessStartInfo(@"publish.bat");
psi.WorkingDirectory = @"C:\temp\";
proc.StartInfo = psi;
proc.Start();
Richard MacCutchan
Именно это я и сказал тебе вчера.
I See Sharp
Да, это здорово.
Рейтинг:
28
Sergey Alexandrovich Kryukov
В этом нет никакого смысла. В общем, CMD.exe бесполезен для программного использования. Это не что иное, как еще одно приложение, интерпретатор команд. Зачем "открывать" его? Вам нужны приложения или команды, которые вы можете запускать/запускать с помощью CMD.exe, то запускайте их, а не CMD.exe.
Вам, безусловно, нужен способ построения решений. Но для этого Вам не нужно запускать Visual Studio. Это очень важно для создания решений и проектов в один клик, без Visual Studio. Я объяснил, как это сделать, в своем недавнем ответе: MSBuild.EXE. Для получения более подробной информации, пожалуйста, смотрите мой недавний ответ: Как я компилирую... с помощью cmd?.
См. Также эти ответы:
Как автоматизировать процесс сборки с помощью MSBuild в C# .net,
Есть ли какое-либо событие, которое может быть запущено во время процесса сборки.
—СА
I See Sharp
Я пытаюсь опубликовать веб-сайт, мне нужно определить целевой путь для этих файлов. Но я не знаю, как это сделать программно. Все идет хорошо, кроме публикации. Потому что цель это единственное чего не хватает в моем коде ниже:
Type type = тип.GetTypeFromProgID ("VisualStudio.DTE. 9. 0", true);
DTE DTE = (DTE)система.Активатор.CreateInstance(тип, true);
Фильтр сообщений.Зарегистрировать();
терминальное оборудование.Главное окно.Видимое = истинное;
VsWebSite.VSWebPackage webPkg = dte.GetObject ("WebPackage") как VsWebSite.VSWebPackage;
webPkg.OpenWebSite(путь, VsWebSite.OpenWebsiteOptions.OpenWebsiteOption_None, правда);
Solutions build 2 slnbld2 = (Solutions Build 2)webPkg.DTE.Solution.SolutionBuild;
slnbld2.Чистый(правда);
slnbld2.Построить(правда);
slnbld2.Опубликовать(правда);
И я читал, что вы можете сгенерировать файлы, необходимые (для публикации веб-сайта), запустив командную строку Visual Studio 2008 с соответствующими аргументами. Но даже это не идет хорошо.
Sergey Alexandrovich Kryukov
Ваш первоначальный вопрос был о сборке. Разве я не ответил? Публикация веб-сайта может быть такой же простой, как FTP-копия.
—СА
Sergey Alexandrovich Kryukov
Тогда начинай. Командная строка-это интерактивное приложение.
Хотя я не знаю почему.
Разве вам не нужен пакет в один клик для сборки и развертывания сразу? Если да, то сделайте именно это, без всяких "подсказок".
—СА
Sergey Alexandrovich Kryukov
Что делать? Интерактивный сеанс командной строки? Просто начать? использование системы.Диагностика.Процесс.Начать.
Что-нибудь еще? Извините, я не уверен, что вы действительно понимаете, чего вам нужно достичь. Если я что-то упустил, пожалуйста, объясните.
—СА
Рейтинг:
18
Richard MacCutchan
Вы не можете использовать две команды в ProcessStartInfo
конструктор. Вам нужно будет создать файл сценария, который включает в себя обе команды, а затем запустить этот файл сценария с помощью cmd.exe.
Richard MacCutchan
Команда для запуска скрипта, то есть "cmd.exe" - это команда, а имя скрипта-поле аргумента. Имейте в виду, что было бы гораздо быстрее просто построить в Visual Studio.