С учетом содержимого решения VS ( Solution.sln ) содержимое:
...
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SomeModule1", "SomeModule1\SomeModule1.csproj", "{SomeModule1 GUID}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SomeModule2", "SomeModule2\SomeModule2.csproj", "{SomeModule2 GUIDB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SomeModuleX", "SomeModuleX\SomeModuleX.csproj", "{SomeModuleX GUID}"
EndProject
...
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug_X|Any CPU = Debug_X|Any CPU
Debug_2|Any CPU = Debug_2|Any CPU
Debug_1|Any CPU = Debug_1|Any CPU
...
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{SomeModule2 GUID}.Debug_X|Any CPU.ActiveCfg = Debug_X|Any CPU
{SomeModule2 GUID}.Debug_X|Any CPU.Build.0 = Debug_X|Any CPU
{SomeModuleX GUID}.Debug_X|Any CPU.ActiveCfg = Debug_X|Any CPU
{SomeModuleX GUID}.Debug_X|Any CPU.Build.0 = Debug_X|Any CPU
...
{SomeModule1 GUID}.Debug_2|Any CPU.ActiveCfg = Debug_2|Any CPU
{SomeModule1 GUID}.Debug_2|Any CPU.Build.0 = Debug_2|Any CPU
{SomeModuleX GUID}.Debug_2|Any CPU.ActiveCfg = Debug_2|Any CPU
{SomeModuleX GUID}.Debug_2|Any CPU.Build.0 = Debug_2|Any CPU
...
{SomeModule1 GUID}.Debug_1|Any CPU.ActiveCfg = Debug_1|Any CPU
{SomeModule1 GUID}.Debug_1|Any CPU.Build.0 = Debug_1|Any CPU
{SomeModule2 GUID}.Debug_1|Any CPU.ActiveCfg = Debug_1|Any CPU
{SomeModule2 GUID}.Debug_1|Any CPU.Build.0 = Debug_1|Any CPU
...
И файл Standard.props , найденный в решении (он импортируется вкаждый VS проект через <Import Project="..\Standard.props" />
):
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
...
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug_1|AnyCPU'">
...
<OutputPath>D:\ProjectPath1\</OutputPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug_2|AnyCPU'">
...
<OutputPath>D:\ProjectPath2\</OutputPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug_X|AnyCPU'">
...
<OutputPath>D:\ProjectPathX\</OutputPath>
</PropertyGroup>
...
</Project>
В качестве примера предположим, что я работаю на SomeModule1.csproj с конфигурацией Debug_1 который строит сборку по пути D:\ProjectPath1\
с такой структурой:
├── ProjectPath1\
│ ├── SomeModule1\...
│ ├── SomeModule2\...
│ ├── SomeModuleX\ (empty folder, is not selected for building in 'Debug_1')
Текущая ситуация:
Я и моя команда работаем над Solution.sln , состоящий из 35 проектов (см. Верхний частичный пример), который имеет несколько конфигураций решения (см. Верхний частичный пример).Каждая конфигурация имеет свой собственный выходной путь, в который VS встраивает файлы.
Проблема:
Каждый раз, когда я изменяю активную конфигурацию без ее построения VS воссоздает все пути из своего пути output
с пустымпапки для текущей конфигурации.Кроме того, он создает пустую папку для SomeModuleX
, которая не включена в Debug_1
конфигурацию решения
Пример: если я изменю с Debug_1 на любую другую, скажем, Debug_2 и некоторые пустые папки появляются на моем диске:
├── ProjectPath1\
│ ├── SomeModule1\... (my folders)
│ ├── SomeModule2\... (my folders)
│ ├── SomeModuleX\ (empty folder, is not selected for building in 'Debug_1')
├── ProjectPath2\
│ ├── SomeModule1\ (empty folders)
│ ├── SomeModule2\ (empty folders)
│ ├── SomeModuleX\ (empty folders)
Если я изменяю на Debug_X , на моем диске появляются некоторые другие пустые папки:
├── ProjectPath1\
│ ├── SomeModule1\... (my folders)
│ ├── SomeModule2\... (my folders)
│ ├── SomeModuleX\ (empty folder, is not selected for building in 'Debug_1')
├── ProjectPath2\
│ ├── SomeModule1\ (empty folders)
│ ├── SomeModule2\ (empty folders)
│ ├── SomeModuleX\ (empty folders)
├── ProjectPathX\
│ ├── SomeModule2\ (empty folders)
│ ├── SomeModule2\ (empty folders)
│ ├── SomeModuleX\ (empty folders)
Если я удаляю папки ProjectPath2
и ProjectPath3
и переключаюсь между конфигурациями решения, папки снова появляются ...
Что я могу сделать?
Итак, что я могу сделать, чтобы избежать этого?Есть ли в VS какие-либо настройки, которые я могу изменить?Я попытался IntermediateOutputPath
без удачи.Я упомяну, что в нашей ситуации мы не можем использовать настройки Working Directory
из Debug
?
Я признаю, что это не шоу-стопор, но иногда меня сводит с ума тот факт, чтоУ меня на диске куча пустых папок (равно количеству конфигураций) (да, я знаю, OCD).
Длинная история, короткая:
Как мне сказать Visual Studio: «Не создавайте пустую папку <OutputPath>Path</OutputPath>
, пока я не нажму Сборка или Перестройка команда!»?
LE: Проблема отправлена в MS здесь ( ссылка ) для всех, кто интересуется этой темой