Переместить каталог промежуточных элементов в проектах С# в Visual Studio
В настоящее время я занимаюсь дезактивацией, рефакторингом и очисткой решения Visual Studio среднего размера (15 проектов). Решение содержит проекты как на С++, так и на С#.
Я стараюсь держать все как можно более аккуратным с точки зрения вывода - разделяя что-то компилятор, созданный из исходного кода, поскольку он помогает подрывной деятельности (хорошо, я могу сказать, что он игнорирует файлы, но я все еще чувствую, что это беспорядочно) от волнующий.
Выход, который я хотел бы получить, выглядит следующим образом:
SolutionDir/
SolutionDir/src/project1/{ Code here }
SolutionDir/int/project1/configuration/{.obj files and other misc compiler junk here}
SolutionDir/bin/project1/configuration/{The fun stuff goes here}
Это кажется тривиальным с проектами С++, поскольку вы можете указать как выход, так и каталог промежуточных элементов. Однако с С#, по крайней мере, через пользовательский интерфейс Visual Studio 2008 кажется невозможным переместить каталог obj?
После некоторого рытья я добавил
<IntermediateOutputPath>..\..\int\ProjectName\Debug\</IntermediateOutputPath>
в С#.csproj
Кажется, что это работает. Это правда, что промежуточные элементы, похоже, заканчиваются там, но в каталоге "obj" и под ним создается каталог конфигурации (например, "debug" ), а затем каталог "TempPE" создается в старом расположении, все из которых пусты.
Это не очень много, но было бы неплохо узнать причину такого поведения и, если возможно, способ его исправить.
Спасибо заранее!
Ответы
Ответ 1
Я сам искал решение этой проблемы и придумал что-то менее навязчивое.
Создайте файл bat с именем "CleanSrcDir.bat" где-нибудь (я поместил мой в свой путь проекта) со следующим содержимым:
rmdir /S /Q %1obj
SET %ERRORLEVEL%=0
После этого добавьте что-то похожее на события пост-сборки проекта С#:
$(ProjectDir)CleanSrcDir.bat $(ProjectDir)
(Это предполагает, что вы разместили свой файл bat в каталоге проекта, конечно.)
Затем измените настройки после сборки на "Всегда", и все готово.
Это немного хакерский, но он уверен, что проблема с контролем версий уходит.
Ответ 2
Если вы добавляете обе следующие строки в каждую конфигурацию сборки, папка "obj" не создается по умолчанию, и нет необходимости в действии после сборки:
<IntermediateOutputPath>Assembly\obj\Debug\</IntermediateOutputPath>
<BaseIntermediateOutputPath>Assembly\obj\Debug\</BaseIntermediateOutputPath>
Свойства игнорирования SVN/SCC также полезны, если желательно
Ответ 3
Я бы рекомендовал добавлять каталоги, которые вы хотите игнорировать, в свойство SVN игнорировать одноуровневое. Кроме того, когда вы выполняете первоначальную фиксацию и не добавляете каталоги bin и obje, клиенты SVN не будут уродливыми. В другой заметке рассмотрим размещение сгенерированных файлов в подкаталоге GeneratedFiles вашего проекта, а не проверку этого каталога в SVN.