Thomas Nielsen - getCore
Чтобы ваш api-контроллер находился в отдельной dll-библиотеке, вам придется запустить его загрузку очень рано в последовательности, например при запуске приложения
GlobalConfiguration.Configuration.Services.Replace(typeof(IAssembliesResolver), new AuxAssemblyResolver());
Таким образом, по сути, вы будете выводить из стандартного IAssembliesResolver и добавлять свои материалы в пользовательскую загрузку везде, где вы разместили свое определение.
public class AuxAssemblyResolver : IAssembliesResolver
{
public ICollection<Assembly> GetAssemblies()
{
List<Assembly> baseAssemblies = AppDomain.CurrentDomain.GetAssemblies().ToList();
//Type controllerType = typeof(Business.Payments.Stripe.SubscriptionController);
//var controllersAssembly = Assembly.LoadFrom(controllerType.Assembly.Location);
//baseAssemblies.Add(controllersAssembly);
return baseAssemblies;
}
}
Я сам сделал что-то подобное, когда недавно сделал контроллер подписки, который я хотел получить из проекта MVC, забавно то, что сборка для загрузки в моем случае бизнес-сборка, обрабатывающая платежи, фактически получает двойную загрузку, Если вы включаете код для ее активной загрузки ... идите разберитесь, но таким образом, загружая любые домены, которые appdomain удается подобрать внешне определенной сборке, предположительно потому, что проект ссылается на нее.
Я все еще немного озадачен, почему создание вспомогательного решения сборок, которое фактически не делает ничего такого, что вы бы не предположили, что любой решатель сборок уже сделал бы, делает трюк, но, по крайней мере, в моем случае это было так.
В принципе, фактическая загрузка сборки-это то, что должно сделать класс доступным для создания экземпляра, поэтому я оставил код do-good прокомментированным в себе, но раскомментирование его создает двусмысленность, и поскольку этот бит затем работал, я в конце концов решил, что это не моя ветряная мельница, чтобы победить, вот почему.
Надеюсь, это поможет
Thomas Nielsen - getCore
Я обновил решение для общих внешних контроллеров, в этом случае web api 2 не имеет разницы с .net core, которую я еще не нашел, кроме большего количества вещей, работающих с места в карьер. Судя по вашему описанию, это та же самая проблема, с которой я столкнулся.