Исходя из комментариев Джеймса Клоуса, я смог написать следующий шаблон для отладки путей к моим файлам:
<#@ template language="C#" debug="true" hostspecific="true"#>
<#@ include file="EF.Utility.CS.ttinclude"#><#@
output extension=".txt"#><#
/////////Some standard-ish settings, continue reading on
CodeGenerationTools code = new CodeGenerationTools(this);
MetadataLoader loader = new MetadataLoader(this);
CodeRegion region = new CodeRegion(this, 1);
MetadataTools ef = new MetadataTools(this);
/////////Below are the relevant sections I used for debugging
string solutionsPath = Host.ResolveAssemblyReference("$(SolutionDir)");//Gives you the location of MySolution.sln
string edmxFile = solutionsPath + "MyDAL/MyDAL/MyModel.edmx"; //Note - VS projects usually have a subdir with the same name as the sln, hence the repetition for MyDAL
#>
Does this file exist?
<#
//
if (File.Exists(edmxFile))
{
//Continue.
#>
Yes
<#
}
else
{
#>
No
<#
}
#>
Это создаст файл .txt и очень быстро поможет вам отладить, может ли ваш путь быть найден.
В качестве примечания, в тех случаях, когда существовал относительный путь к каталогу (например, ../App.config
), который не мог быть найден, я обнаружил, что он помогает поместить файл (например, test1.txt
) на каждом уровне каталога, как я понял, Host.ResolvePath
не смог увидеть вне текущей сборки с моей настройкой. Это предостережение может очень быстро запутаться, поскольку ../../App.config
может разрешиться до MySolution\App.config
, но ../../MyDal/README.txt
не разрешится (следовательно, файл не будет найден), даже если это правильный путь. Вышеприведенный код, по-моему, устраняет эту проблему, насколько я вижу.
Приведенное выше решение также может быть решением этой проблемы - Как использовать генератор сущностей poco