Visual Studio 2017 создает пустые выходные папки - PullRequest
0 голосов
/ 01 марта 2019

С учетом содержимого решения 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 здесь ( ссылка ) для всех, кто интересуется этой темой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...