Я не совсем понял, в чем проблема, но я изолировал ее в маленьком репро, где это происходит:
<#@ template language="C#" #>
<#@ assembly name="EnvDTE" #>
<#@ assembly name="VSLangProj" #>
<#+
void Test(EnvDTE.Project Project) {
var vsProject = (VSLangProj.VSProject)Project.Object;
var refs = vsProject.References;
}
#>
, который получает следующее предупреждение во время обработки:
Compiling transformation: Assuming assembly reference 'EnvDTE, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' matches 'EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a', you may need to supply runtime policy
Единственный EnvDTE в моем GAC - это 8.0.0.0. Кажется, что проблема связана с тем, что VSLangProj 7.0.3300.0 (единственный, который у меня есть) имеет ссылку на EnvDTE 7.0.3300.0, которого не существует.
Ясно, что это еще не «ответ», но это начало расследования:)