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

Как настроить промежуточный выходной каталог в С#

Я пытаюсь организовать свое рабочее пространство и хочу, чтобы мои промежуточные объекты были помещены в папку ..\build\obj относительно моего файла .csproj. Итак, я положил:

<IntermediateOutputPath>..\build\obj\Debug</IntermediateOutputPath>

в файле .csproj. Промежуточные объекты теперь помещаются в это место при построении решения, но проблема в том, что каталог obj все еще создается в каталоге, в котором находится файл .csproj (что-то вроде obj\Debug\TempPE), когда решение открыт. Для чего этот каталог и как я могу его переместить?

4b9b3361

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