Могу ли я отключить генерацию obj в той же директории для моего проекта _every_? - PullRequest
2 голосов
/ 04 октября 2011

Я убираю свои проекты. И я нашел способ удалить папку объекта с добавлением: % TEMP%

В моих проектах. Но я хочу как-то сделать этот глобальный параметр или автоматически удалить мои obj dirs после сборки. Есть ли способ сделать это?

Ответы [ 2 ]

1 голос
/ 07 октября 2011

Используете ли вы контроль исходного кода?
Этот комментарий звучит так, будто вы этого не делаете:

При архивировании это ненужные мегабайты.

("Архивация""звучит немного похоже на регулярное копирование всей папки проекта в что-то вроде backup_yyyymmdd)

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

Помимо общих преимуществ (например, наличие истории изменений с датами и комментариями ...), у нее есть готовое решение для вашей проблемы с папками obj:

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

Например, в Mercurial (который я использую) настройки игнорирования сохраняются в файле с именем .hgignore в основной папке ( Git имеет то же самое,он просто называется .gitignore).

Мой файл по умолчанию .hgignore для всех проектов Visual Studio выглядит следующим образом:

syntax: glob
bin
obj
*.suo
*.user

Первая строка принадлежит синтаксису игнорирования Mercurial, остальныенастройки, которые следует игнорировать.
Вы можете видеть, что папки bin и obj игнорируются ... и они игнорируются независимо от того, в какой подпапке они находятся!

Так что я неЯ должен заботиться о том, где на самом деле находятся папки obj, и мне не нужно удалять их вручную каждый раз, когда я создаю свое решение.Их просто нет в моей истории управления исходными кодами.


Плюс, у меня есть вариант ответа Фудзи о том, что все помещается в одну выходную папку:

Мне нравится это делатьно я предпочитаю изменять выходные папки в настройках проекта Visual Studio вместо использования событий после сборки.

Выходные папки по умолчанию:

  • bin\Debug\
  • bin\Release\

Я изменяю их на:

  • ..\build\Debug\
  • ..\build\Release\

Это компилирует все в подпапки папки build, которая находится на том же уровне, что и файл .sln (что означает: все проекты в решении напрямую компилируются в одну и ту же папку).
Это также уменьшает время компиляции, поскольку VisualStudio не нужно будет копировать все зависимости после компиляции (потому что все уже находится в одной папке).

(я делаю это в основном из-за времени компиляции, потому чтоЯ игнорирую bin и obj папок в Mercurial, как описано выше, поэтому мне все равно, где они на самом деле)

1 голос
/ 04 октября 2011

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

У меня есть следующая командная строка в событиях пост-сборки.

copy "$(TargetPath)" "$(SolutionDir)\Output\$(TargetFileName)"

Это скопирует скомпилированный файл в выходной каталог внутри Solution.Вам необходимо добавить это ко всем проектам в вашем решении.

Если у вас есть зависимости, которые также необходимо скопировать, вы также можете добавить что-то подобное.

copy "$(ProjectDir)Dependencies\Language.xml" "$(SolutionDir)\Output\Extensions\Language.xml"

[РЕДАКТИРОВАТЬ]

Можно попробовать сначала скопировать файл, а затем, как только это будет сделано, удалить папку объекта.

copy "$(TargetPath)" "$(SolutionDir)\Output\$(TargetFileName)"
rd /s /q "$(ProjectDir)\obj"

[РЕДАКТИРОВАТЬ2] Обновлен скриншоты для иллюстрации.:)

Вот так обычно выглядит моя папка с объектами после компиляции проекта.enter image description here

Так выглядит после компиляции с помощью приведенной выше команды.Как видите, папка воссоздается после события Visual Studio, но папка пуста.enter image description here

Вы можете дважды проверить, что вы используете Visual Studio с повышенными разрешениями.Для этого просто щелкните правой кнопкой мыши Visual Studio и выберите "Run as Administrator".

.
...