Мэтт,
Они недоступны, нет, так как компиляция для вашего проекта и компиляция для шаблонов полностью изолированы от VS2010.
Однако у меня есть (несколько неуклюжий) обходной путь для вас.
Если вы включите заглушку, содержащую директиву шаблона, вы можете установить параметры компилятора с соответствующим символом для компиляции.
например. простая заглушка, содержащая следующее, с именем Define.t4:
<#@ template compilerOptions="/d:XBOX" debug="false" hostspecific="false" language="C#" #>
Поместите это в подкаталог с именем XBOX и поместите аналогичный в каталог с именем PHONE
<#@ template compilerOptions="/d:PHONE" debug="false" hostspecific="false" language="C#" #>
Обратите внимание на определения символов компилятора.
Теперь установите переменную окружения на XBOX или PHONE - скажем, ARCHITECTURE
Теперь вместо шаблонной директивы в ваших шаблонах включите файл Define.t4, и вы сможете использовать обычный синтаксис условий C # / VB. Не забудьте поставить #if на собственную линию. Вот пример:
<#@ include file="$(ProjectDir)%ARCHITECTURE%\Define.t4" #>
<#@ output extension=".txt" #>
<#
#if XBOX #>
public unsafe struct Foo
<#
#else #>
public struct Foo
<#
#endif #>
Надеюсь, это заставит вас двигаться.