Как исправить пропущенные ошибки типа / пространства имен в моем шаблоне модели Entity Framework 4.1? - PullRequest
2 голосов
/ 23 июня 2011

У меня есть шаблон T4 для генерации классов C # для сущностей, поддерживающих мою модель .edmx.Шаблон начинается с этого заголовка:

<#@ template language="C#" debug="false" hostspecific="true"#>
<#@ include file="EF.Utility.CS.ttinclude"#>
<#@ output extension=".cs"#>

Попытка построить проект приводит к этим ошибкам

error CS0234: The type or namespace name 'Design' does not exist in the namespace 'System.Data.Entity'...
error CS0246: The type or namespace name 'EnvDTE' could not be found (are you missing a using directive...
error CS0234: The type or namespace name 'VisualStudio' does not exist in the namespace 'Microsoft'...

Как это исправить?

Ответы [ 2 ]

4 голосов
/ 24 июня 2011

Получается, что, основываясь на потоке VS Extensibility , причиной проблемы было расширение Clarius Visual T4.Сброс этого узла в файле .csproj на

<Compile Include="SomeModel.tt">
  <Generator>TextTemplatingFileGenerator</Generator>
  <LastGenOutput>SomeModel.cs</LastGenOutput>
</Compile>

с

<None Include="SomeModel.tt">
  <Generator>TextTemplatingFileGenerator</Generator>
  <LastGenOutput>SomeModel.cs</LastGenOutput>
</None>

Решение состоит в том, чтобы вручную изменить узел на None в файле .csproj.Возвращение обратно через редактор свойств Visual Studio для файла .tt не работает .Наконец, отключение расширения предотвращает это снова.

0 голосов
/ 17 января 2015

Просто добавьте необходимые сборки в начале вашего .tt файла;как это:

<#@ template language="C#" debug="false" hostspecific="true"#>
<#@ assembly name="System.Data.Entity" #>
<#@ assembly name="System.Data.Entity.Design" #>
...
...