Как настроить промежуточный выходной каталог в С#
Я пытаюсь организовать свое рабочее пространство и хочу, чтобы мои промежуточные объекты были помещены в папку ..\build\obj
относительно моего файла .csproj. Итак, я положил:
<IntermediateOutputPath>..\build\obj\Debug</IntermediateOutputPath>
в файле .csproj. Промежуточные объекты теперь помещаются в это место при построении решения, но проблема в том, что каталог obj
все еще создается в каталоге, в котором находится файл .csproj (что-то вроде obj\Debug\TempPE
), когда решение открыт. Для чего этот каталог и как я могу его переместить?
Ответы
Ответ 1
Вы можете попытаться сделать это (не забывайте, что есть разделы Debug и Release, которые будут использоваться в зависимости от типа сборки, на которую вы нацелены):
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
...
<BaseIntermediateOutputPath>..\build\obj</BaseIntermediateOutputPath>
<IntermediateOutputPath>$(BaseIntermediateOutputPath)$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
...
<BaseIntermediateOutputPath>..\build\obj</BaseIntermediateOutputPath>
<IntermediateOutputPath>$(BaseIntermediateOutputPath)$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
Ответ 2
Сделайте это, как Microsoft:
<PropertyGroup>
<IntermediateOutputPath Condition=" '$(PlatformName)' == 'AnyCPU' ">$(BaseIntermediateOutputPath)$(Configuration)\</IntermediateOutputPath>
<IntermediateOutputPath Condition=" '$(PlatformName)' != 'AnyCPU' ">$(BaseIntermediateOutputPath)$(PlatformName)\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
Ответ 3
Я использовал:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>$(OBJDIR)\$(SolutionName)\bin\$(Configuration)\</OutputPath>
<BaseIntermediateOutputPath>$(OBJDIR)\$(SolutionName)\obj\$(Configuration)\</BaseIntermediateOutputPath>
<IntermediateOutputPath>$(BaseIntermediateOutputPath)\</IntermediateOutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
(В Visual Studio 2012 Beta, FWIW), и все работает отлично.
OBJDIR на моей машине указывает на E:\BuildOutput
.