Теги AlternateContent, вызывающие проблемы с IDE, но не компиляторы
Я работаю над старым продуктом. Мне нужно сделать области сложного интерфейса дополнительными, основываясь на константах построения. Невозможно переместить эти регионы в элементы управления, поэтому я использую теги AlternateContent (mc: AlternateContent).
Это отлично работает при компиляции, и приложение работает как ожидалось.
Однако, IDE заявляет одну ошибку для каждого AlternateContent и прилагается Choice Tag и не загружает окно Design/preview (в VS или Blend):
The name "AlternateContent" does not exist in the namespace "http://schemas.openxmlformats.org/markup-compatibility/2006"
The name "Choice" does not exist in the namespace "http://schemas.openxmlformats.org/markup-compatibility/2006"
Я попытался, перестроил, очистил и перестроил, изменив настройки сборки между выпуском, debug, x86, x64 и перезагрузкой. Ничто не помогает. Он даже дает те же ошибки в Blend.
Я надеюсь, что это просто что-то глупое, что я делаю, и я могу это исправить; или, возможно, более новый URI пространства имен, который я должен использовать. Если я не могу разрешить ошибки, я надеюсь, что кто-то знает трюк, чтобы подавить эти ошибки в среде IDE, поэтому можете использовать его.
У меня есть полностью обновленная установка VS2013 Premium. Тем не менее, он имеет сбой на тестовой машине с VS13 CTP, а другой работает VS2012 (полностью обновлен), без каких-либо надстроек; поэтому я должен предположить, что это не проблема с установкой моего ПК.
Ответы
Ответ 1
Немного поздно для вечеринки, но если вы добавите тэг mc к свойству Ignorable, ошибка исчезнет. Ваш контент не будет отображаться в дизайнере, но работал у меня, когда я составлял различные варианты моего проекта.
<UserControl...
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:conditional="defined-in-assembly.cs"
mc:Ignorable="d mc"/>
Ответ 2
Как насчет этого:
public class BuildConstants
{
public bool IsDebug
{
get
{
#if DEBUG
return true;
#else
return false;
#endif
}
}
}
и xaml:
<Application.Resources>
<BooleanToVisibilityConverter x:Name="BooleanToVisibilityConverter"></BooleanToVisibilityConverter>
<l:BuildConstants x:Key="BuildConstants" />
</Application.Resources>
<Grid Visibility="{Binding IsDebug, Source={StaticResource BuildConstants}, Converter={StaticResource BooleanToVisibilityConverter}}">
<TextBlock Text="This will be visible only when DEBUG build constant is present"></TextBlock>
</Grid>