Подтвердить что ты не робот

Переместить каталог промежуточных элементов в проектах С# в 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" создается в старом расположении, все из которых пусты.

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

Спасибо заранее!

4b9b3361

Ответ 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.