2014-01-26 3 views
0

Мне нужно включить определенные исходные файлы только в том случае, если мой проект находится в определенных конфигурациях пули. Это возможно?Условно пропускать компиляцию исходных файлов C#

Я в настоящее время дублировал Debug и Release и создал DebugAlt и ReleaseAlt. Мне нужно скомпилировать определенные формы только в Debug и Release и исключить их в альтернативных конфигурациях.

Могу ли я написать что-то подобное в файле .csproj?

<Compile Include="frmTools.cs" Condition="CONFIG=Debug OR Config=Release"/> 

Update:

Согласно MS Build docs этого должно быть возможно что-то вроде этого:

<Choose> 
    <When Condition="'$(Configuration)'=='Debug'"> 
     <ItemGroup> 
      <Compile Include="frmTools.cs"> 
       <SubType>Form</SubType> 
      </Compile> 
     </ItemGroup> 
    </When> 
</Choose> 

Это работает halfways; Проект загружается отлично, но frmTools НИКОГДА не компилируется. Это потому, что условие When всегда оценивается как false. Зачем? Что я сделал не так?

+0

В чем именно смысл этого? Вы не платите за код, который ваша программа не использует. –

ответ

1

Вы можете использовать http://msdn.microsoft.com/library/ms164307.aspx поэтому.

Пожалуйста, обратите внимание, что вам необходимо отредактировать файл проекта вручную в текстовом редакторе, Visual Studio не позволяет редактировать его с помощью графического интерфейса пользователя.

Однако вы все равно можете открыть проекты в Visual Studio.

0

Я, наконец, получил это от работы. Поиск массива DefineConstants позволяет проверить, определен ли определенный константа var, и соответственно включить/исключить исходные файлы.

<Choose> 
    <When Condition="$(DefineConstants.Contains('MYCONST'))"> 
     <ItemGroup> 
      <Compile Include="frmTools.cs"> 
       <SubType>Form</SubType> 
      </Compile> 
     </ItemGroup> 
    </When> 
</Choose> 

Вместо проверки, какой проект конфигурации активна, мы просто добавляем константный к нескольким проектам конфигов, а затем проверить константное значение в XML Project.

Смежные вопросы