Автоматически сгенерированный IntermediateOutputPath в файле .csproj

4

После обновления кода из Git у меня есть ошибка в csproj, потому что путь к file не существует. Вот код, который инициирует ошибку:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'ZAL_Release|x64'">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>..\Release\bin\soft\</OutputPath>
    <DefineConstants>TRACE;ZAL</DefineConstants>
    <DebugType>full</DebugType>
    <PlatformTarget>x64</PlatformTarget>
    <ErrorReport>prompt</ErrorReport>
    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
    <Optimize>true</Optimize>
    <IntermediateOutputPath>C:\Users\HARRY~1\AppData\Local\Temp\vs543E.tmp\x64\ZAL_Release\</IntermediateOutputPath>
</PropertyGroup>

Этот filepath существует на компьютере Гарри, но не на моем. Парень с таким именем понятия не имеет, как он это создал, поэтому я предполагаю, что Visual Studio его создал. Вот почему у меня три вопроса:

1. Какова цель тега IntermediateOutputPath в csproj? (Я уже проверил документацию MSDN, но все еще не ясно)

2. Как Гарри сгенерировал код (потому что он не знает)?

3. Можно ли использовать универсальную переменную для получения пути к файлу, который может использовать каждый? В этом случае является ли этот IntermediateOutputPath обязательным для запуска программы?

  • 0
    @TheGeorgeous: я не понимаю, почему вы хотите, чтобы я удалил файл csproj, а затем открыл проект. Если я сделаю это, он не откроет проект, и я даже могу потерять некоторые данные, такие как ссылки на проект.
  • 0
    Все средства, вы должны определенно не удалить этот файл из мерзавца. Файл .csproj является центральным файлом проекта для каждого проекта Visual Studio, и люди не смогут работать над ним без него.
Показать ещё 1 комментарий
Теги:
visual-studio
csproj

1 ответ

6
Лучший ответ
  1. OutputPath в вашем файле проекта

    Указывает путь к выходному каталогу относительно каталога проекта, например, "bin\Debug".

    BaseOutputPath

    Определяет базовый путь для выходного файла. Если он установлен, MSBuild будет использовать OutputPath = $ (BaseOutputPath)\$ (Configuration). Пример синтаксиса: c:\xyz\bin\

    BaseIntermediateOutputPath

    Папка верхнего уровня, в которой создаются все промежуточные выходные папки, зависящие от конфигурации. Значением по умолчанию является obj. Следующий код является примером: c:\xyz\obj\

    IntermediateOutputPath

    Полный промежуточный выходной путь, полученный из BaseIntermediateOutputPath, если путь не указан. Например, \obj\debug. Если это свойство переопределено, то установка BaseIntermediateOutputPath не имеет никакого эффекта.

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

  2. См. Этот вопрос для объяснения того, как IntermediateOutputPath мог быть вставлен в ваш файл csproj.

    РЕДАКТИРОВАТЬ: На самом деле, это расплывчатое объяснение, но я не мог найти другую информацию об этом. Следите за изменениями в вашем файле csproj, чтобы определить причину изменений.

  3. Вы можете установить для IntermediateOutputPath относительный путь. Однако вы также можете просто удалить весь тег и перейти по умолчанию. В наших файлах проекта Visual Studio 2015 мы только устанавливаем базовый OutputPath, и все работает нормально. Я думаю, что местом по умолчанию для ваших промежуточных объектов является /obj.

  • 4
    Хорошо, я удалил строку IntermediateOutputPath, и она отлично работает. Все счастливы. Спасибо @kowsky

Ещё вопросы

Сообщество Overcoder
Наверх
Меню