2009-05-02 6 views
15

В настоящее время я занимаюсь сбором, рефакторингом и очисткой проектов среднего размера (15 Иш). Решение Visual Studio. Решение содержит проекты как на C++, так и на C#.Переместить каталог промежуточных элементов на проектах C# в Visual Studio

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

Выход я хотел бы достичь следующим образом:

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} 

Это кажется тривиальным с проектами C++, как вы можете указать, как выход и каталог промежуточных продуктов. Однако с C#, по крайней мере, через пользовательский интерфейс Visual Studio 2008 кажется невозможным переместить каталог obj?

После выполнения некоторого рытья, я добавил

<IntermediateOutputPath>..\..\int\ProjectName\Debug\</IntermediateOutputPath> 

в C# .csproj

Это, кажется, работает, вроде. Это правда, что промежуточные элементы, похоже, заканчиваются там, но каталог «obj» и под ним создается каталог конфигурации (например, «debug»), а затем каталог «TempPE» создается в старом расположении, все из которых пусты.

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

Заранее благодарен!

+6

Я думаю, что это * большое дело, и MS необходимо исправить это. –

+0

Возможный дубликат [Как настроить промежуточный выходной каталог в C#?] (Http://stackoverflow.com/questions/3311212/how-to-configure-intermediate-output-directory-in-c) –

ответ

2

Я сам искал решение этой проблемы и придумал что-то менее навязчивое.

Создайте файл летучей мыши под названием «CleanSrcDir.bat» где-то (я поставил мину на моем пути проекта) со следующим содержанием:

rmdir /S /Q %1obj 
SET %ERRORLEVEL%=0 

После этого, добавить что-то похожее на пост-строить события # проекта C в :

$(ProjectDir)CleanSrcDir.bat $(ProjectDir) 

(Это предполагает, что вы разместили свой файл битой в директории проекта, конечно.) Затем измените настройки после сборки «Всегда», и вы сделали.

Это немного хакерский, но он уверен, что проблема с контролем версий уходит.

1

Я бы рекомендовал добавить каталоги, которые вы хотите игнорировать, в свойство SVN игнорировать одноуровневое. Кроме того, когда вы выполняете первоначальную фиксацию и не добавляете каталоги bin и obje, клиенты SVN не будут уродливыми. В другой заметке рассмотрим размещение сгенерированных файлов в подкаталоге GeneratedFiles вашего проекта, а не проверку этого каталога в SVN.

+2

Все это только обходные пути , но вы можете найти их полезными. – GregC

+0

Спасибо - достаточно полезно, чтобы +1, недостаточно, чтобы принять ответ, пока;) –

8

Если добавить оба из следующих строк в каждой конфигурации сборки, то «OBJ» папка не создается по умолчанию, и нет необходимости в действии после сборки:

<IntermediateOutputPath>Assembly\obj\Debug\</IntermediateOutputPath> 
<BaseIntermediateOutputPath>Assembly\obj\Debug\</BaseIntermediateOutputPath> 

SVN/SCC игнорировать свойства также полезны, если это необходимо

+0

Очень приятно! За исключением ... VS2010 [будет продолжать воссоздавать папку нежелательной TempPE] (http://connect.microsoft.com/VisualStudio/feedback/details/583689/temppe-folder-is-created-even-when-outputpath-intermediateoutputpath-and -baseintermediateoutputpath-are-set) ... –

+0

VS2012 не имеет этой проблемы (создание папки нежелательной TempPE). Единственным выходом является папка bin и obj, указанная – flipchart

+0

В соответствии с помощью «Общие свойства проекта MSBuild» в MSDN «IntermediateOutputPath» ... »Если это свойство (_IntermediateOutputPath_) переопределено, то установка BaseIntermediateOutputPath не влияет ... ». Из моего тестирования в VS2010 это кажется правдой. http://msdn.microsoft.com/en-us/library/vstudio/bb629394(v=vs.110).aspx –

Смежные вопросы