У меня ранее были проблемы с настройкой отражения для правильной работы в шаблонах T4, предназначенных для фреймворка .Net Core
. Я решил это с помощью ответа в моей предыдущей теме, что может быть важно, поскольку перенаправление привязки может оказать некоторое влияние на мою текущую проблему.
Шаблон T4 Не удалось загрузить файл или сборку 'System.Runtime, Версия = 4.2.0.0'
Мне удалось заставить шаблоны генерироваться правильно, но только если они ссылались на сборки, отличные от их собственных. Теперь у меня есть случай, когда у меня есть шаблон T4, ссылающийся на сборку / проект, в котором находится файл, и я получаю эту ошибку:
System.TypeLoadException: Could not load type 'System.Runtime.CompilerServices.IAsyncStateMachine' from assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
Мой код шаблона выглядит следующим образом:
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Reflection" #>
<#@ assembly name="$(TargetDir)Services.dll" #>
<#@ assembly name="$(NuGetPackageRoot)\automapper\8.0.0\lib\netstandard2.0\AutoMapper.dll" #>
<#@ import namespace="Services" #>
<#@ import namespace="Services.Resources.Attributes" #>
<#@ import namespace="Services.Resources.DataTransferObjects.Infrastructure" #>
<#@ output extension=".cs" #>
//Autogen code
//This code is autogen. Do not make any changes to this file
namespace Services
{
<#
var classes = System.Reflection.Assembly.GetAssembly(typeof(BaseService))
.GetTypes()
.Where(p => !p.IsAbstract && p.BaseType == typeof(BaseService))
.ToList();
#>
}
Напоминаю, что я принудительно использую System.Runtime version 4.0.0.0
, поскольку, похоже, это единственное, что правильно работает для шаблонов T4, нацеленных на платформы .Net Core. Есть ли что-то подобное, что я могу сделать, чтобы указать на пространство имен System.Runtime.CompilerServices
?