Какое расположение по умолчанию для журналов MSBuild?

102

Я использую Visual Studio Express 2012. Где находится файл журнала? Я искал в папке, где хранятся мое решение и проекты, но не могу найти ни одного файла .log.

Это конфигурация для регистрации:

введите описание изображения здесь

Hanxue
источник
1
По умолчанию файл .log отсутствует. Посмотрите в окно вывода.
Hans Passant
13
@Hans, В моем случае в окне вывода есть сообщения "в журнале сборки доступна дополнительная информация". так что где-то есть отдельный журнал. Пока не нашел.
Брэндон Кученски 08

Ответы:

106

Файл журнала из Visual Studio поддерживается только для проектов C ++. Вам просто нужно работать с окном вывода для других.

См. Этот аналогичный поток: VS2010: минимальный журнал сборки в выводе и подробный журнал в файле журнала

И если вам случится сделать это для проекта C ++, файл находится по адресу :

... Журнал сборки в промежуточном каталоге файлов ... Путь и имя журнала сборки представлен макро выражения MSBuild, $(IntDir)\$(MSBuildProjectName).log.

Дмитрий Павлов
источник
15
Я думаю, что Visual Studio глупо не вести подробный журнал в файле. Что ж, реальность, которую я должен принять. Спасибо за ответ, @Dmitry
Hanxue
8
@hanxue - У него есть журнал. Этот журнал просто не отправляется в файл. Если вам нужен файл журнала, запустите msbuild из командной строки.
Ritch Melton
44
ТОГДА ПОЧЕМУ ЭТО НЕ
ГОВОРИТ
2
Бог. Черт побери. Почему это не просто собственность в решении? Почему в любом случае окно вывода настолько ужасно, что вы вынуждены постоянно поддерживать его на минимальном уровне вывода, и почему для перехода с одного уровня вывода на другой требуется 8 шагов? Исправьте любой из них, пожалуйста.
Джеймс
@James Я думаю, вы могли бы написать макрос и назначить его кнопке на панели инструментов. Эти ссылки могут быть отправной точкой stackoverflow.com/questions/12062515/… и vlasovstudio.com/visual-commander
Дмитрий Павлов
25

Используйте вывод сборки вместо записи в файл. Вместо копирования / вставки просто щелкните где-нибудь в выводе и нажмите CTRL + S для сохранения. Visual Studio предложит вам указать местоположение (проверено с Visual Studio 2017, но я предполагаю, что это работает и в более ранних версиях).

введите описание изображения здесь

Дан Горан Лунде
источник
Это хорошо. Они также должны поместить это в контекстное меню.
Sheen
23

В документации msdn это довольно ясно (и вам это не понравится!):

https://msdn.microsoft.com/en-us/library/jj651643.aspx

Где сказано:

Чтобы создать файл журнала сборки для проекта с управляемым кодом В строке меню выберите «Сборка», «Сборка решения».

В окне вывода выделите информацию из сборки, а затем скопируйте ее в буфер обмена.

Откройте текстовый редактор, например «Блокнот», вставьте информацию в файл и сохраните его.

C Джонсон
источник
17
Это все хорошо, пока вы не используете диагностический вывод, и VS не решит выбросить исключение «нехватки памяти» при попытке копирования в буфер обмена. На самом деле решение не поддерживать отправку журнала сборки в файл в среде IDE - это действительно глупое решение. Но эй-хо, такова жизнь.
Стив Петтифер
1
Закрепите сборку в текстовом файле? msbuild mysln.sln> output.txt (вероятно, потребуется добавить к нему параметры, чтобы ваш sln скомпилировался, но вы должны иметь возможность поймать это из окна вывода vs iirc на правильном уровне детализации)
Daniel M
Обычно, когда я использую командную строку, я заставляю свои системы сборки выводить минимальную информацию в окно терминала, но подробный журнал в файл. MSBuild может это сделать.
C Johnson
"И тебе это не понравится!" Это говорит обо всем в 6 словах, спасибо
FIV
2

Хотя это правда, что VS не допускает этого напрямую, все же возможно построить с MSBuild «внутри» VS2015 и получить как вывод окна сборки, так и файл журнала, как показано ниже: (Возможно, это своего рода взлом.)

  1. В своем решении VS Managed добавьте новый проект (назовем его «Make»). а. Вам нужен проект Visual C ++ / NMake.
  2. Определите необходимые команды MSBuild в командной строке (см. Ниже).
  3. Измените конфигурацию решения, чтобы построить проект NMake вместо обычных управляемых проектов.

В результате будет создан проект, в котором есть командные строки Build, Rebuild и Clean, в которых вы можете напрямую выполнить MSBuild. Например:

Восстановить: MSBuild.exe /ds /v:diag /property:Configuration=Debug ..\BuildTest\BuildTest.csproj /t:Clean,Build

Сборка: MSBuild.exe /ds /v:diag /property:Configuration=Debug ..\BuildTest\BuildTest.csproj /t:Build

Чистый: MSBuild.exe /ds /v:diag /property:Configuration=Debug ..\BuildTest\BuildTest.csproj /t:Clean

Вы также можете указать несколько командных строк MSBuild.EXE для создания нескольких проектов. Для обычного результата сборки всего решения вы можете нацеливаться только на окончательные конечные сборки и позволить графу зависимостей генерировать отдельные цели.

Это создаст файл .log, где NAME - это имя проекта NMake, который вы использовали. В приведенном выше примере журнал будет make.log.

Рабочий пример доступен на GitHub: https://github.com/bitblitz/VS_MsbuildExample (протестирован с VS2015)

Обратите внимание, что при непосредственном построении отдельных проектов все равно будет строиться с обычным поведением VS, но вы можете построить полное решение внутри VS и получить журналы сборки.

Брэд
источник
1
Ссылка на VS_MsbuildExample не работает.
JPaget
Привет, @brad, что случилось с твоим примером на GitHub?
Yann Duran
Исправлен github, извините за проблемы. @YannDuran
Brad