В моем решении Visual Studio 2022 C# у меня есть две конфигурации решения Debug A
и Debug B
. Я хочу отключить конфигурацию Debug B
от компиляции определенных файлов (или папок). То есть я хочу, чтобы конфигурация Debug A
создавала все файлы проекта, а конфигурация Debug B
не создавала определенные файлы.
Как этого можно добиться в решении? У меня есть разные макросы прекомпиляции в разных конфигурациях, которые я мог бы использовать, чтобы вручную исключить весь код в файлах, но мне интересно, есть ли лучший способ?
Файлы, которые я хочу исключить, не относятся к конкретному проекту, и поэтому их нельзя исключить в диспетчере конфигурации. Я также пытался установить Build Action
на None
в настройках файла, но, похоже, это остается одинаковым для обеих конфигураций.
@Алехандро, да, именно это я имею в виду, говоря вручную исключить весь код в файлах с помощью макросов предварительной компиляции, но я ищу лучший способ.
Вы можете использовать условия MSBuild в файле проекта для добавления/удаления файлов из компиляции на основе текущей конфигурации.
Вы можете использовать условия как внутри самого кода, так и в .csproj для выполнения различных операций в зависимости от некоторых типов условий сборки, таких как фреймворк, когда он состоит из нескольких фреймворков, тип сборки и т. д.
Я надеюсь, что это сработает для вас:
<ItemGroup Condition = " '$(Configuration)' == 'Debug A' ">
<ItemGroup>
<Folder Exclude = "folder\" />
</ItemGroup>
</ItemGroup>
Документы Майкрософт: Как исключить файлы из сборки
Нашёл тему с таким же вопросом, вот: Еще одна тема с тем же вопросом
Быстрым и грязным решением было бы окружить содержимое всего файла директивой
#ifdef
, чтобы исключить весь файл.