После обновления кода из 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
обязательным для запуска программы?
OutputPath
в вашем файле проекта
Указывает путь к выходному каталогу относительно каталога проекта, например, "bin\Debug".
BaseOutputPath
Определяет базовый путь для выходного файла. Если он установлен, MSBuild будет использовать OutputPath = $ (BaseOutputPath)\$ (Configuration). Пример синтаксиса: c:\xyz\bin\
BaseIntermediateOutputPath
Папка верхнего уровня, в которой создаются все промежуточные выходные папки, зависящие от конфигурации. Значением по умолчанию является obj. Следующий код является примером: c:\xyz\obj\
IntermediateOutputPath
Полный промежуточный выходной путь, полученный из BaseIntermediateOutputPath, если путь не указан. Например, \obj\debug. Если это свойство переопределено, то установка BaseIntermediateOutputPath не имеет никакого эффекта.
Вы можете прочитать это здесь. В общем, эти пути должны быть относительными и никоим образом не приводить к домашним папкам или другим пользовательским путям.
См. Этот вопрос для объяснения того, как IntermediateOutputPath
мог быть вставлен в ваш файл csproj.
РЕДАКТИРОВАТЬ: На самом деле, это расплывчатое объяснение, но я не мог найти другую информацию об этом. Следите за изменениями в вашем файле csproj, чтобы определить причину изменений.
Вы можете установить для IntermediateOutputPath
относительный путь. Однако вы также можете просто удалить весь тег и перейти по умолчанию. В наших файлах проекта Visual Studio 2015 мы только устанавливаем базовый OutputPath
, и все работает нормально. Я думаю, что местом по умолчанию для ваших промежуточных объектов является /obj
.