Не удалось загрузить тип 'System.Runtime.CompilerServices.IAsyncStateMachine' из сборки 'System.Runtime' - PullRequest
0 голосов
/ 24 мая 2019

У меня ранее были проблемы с настройкой отражения для правильной работы в шаблонах 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?

...