Visual Studio 2022 игнорирует свойство BaseIntermediateOutputPath, указанное в файлах проекта.
У меня есть решение, содержащее большое количество проектов. Чтобы отделить бинарники от исходников, я изменил на "..\bin" и
BaseIntermediateOutputPath
свойство во всех проектах на "..\obj".
Это сработало для
BaseOutputPath
- все бинарники находятся в общем каталоге. Для промежуточного пути это вообще не сработало. Это сломало проекты, потому что каталог все еще создается в папках проекта, но теперь файлы не исключаются из проекта и отображаются как доступные для фиксации для Git.
Что я делаю неправильно? Это нормальное поведение? Я не хочу, чтобы каталоги obj создавались в каталогах проекта. Как я могу добиться такого поведения?
На данный момент я просто удалил свойство из проектов. По крайней мере
obj
папки не отображаются как папки проекта.
1 ответ
Вам необходимо использовать макросы MSBuild, такие как $(SolutionDir) или $(MSBuildThisFileDirectory) и подобные им, если вы не хотите, чтобы относительные пути начинались с файла вашего проекта.
Например, вы можете установить для «BaseIntermediateOutputPath» значение $(SolutionDir)\obj или, что еще лучше, значение $(SolutionDir)\obj-$(Configuration). Таким образом вы разделите сборки Debug и Release, что, если вы этого не сделаете, доставит вам много неприятностей.
Вот что я использую в конкретном «Directory.Build.props». Обратите внимание
<OutDir>
вход. Это изменит выходной каталог для всех проектов в этом каталоге на
stage64\lib
каталог.
<PropertyGroup>
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v141</PlatformToolset>
<OutDir>$(SolutionDir)..\stage64\lib\</OutDir>
</PropertyGroup>