![](/img/trans.png)
[英]How to resolve Windsor container dependencies for a class library in ASP.NET Core Web API project?
[英]Windsor resolve issue - ASP.NET Core Web API .Net version 6 cannot register my .Net framework 4.8 C# Library assembly
我试图让我的组件在我的 Web API 项目中得到解决。 我正在使用此代码片段进行注册,这在我的 UnitTest 项目中运行良好。
程序.cs
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
IWindsorContainer container = new WindsorContainer(new XmlInterpreter("Windsor.config"));
container.Resolve<IDataProvider>();
但是在 my.Net Core Web API 项目中我得到了这个错误:
Castle.MicroKernel.SubSystems.Conversion.ConverterException
HResult=0x80131500
Message=Could not convert string 'MyProject.DataAccess.DataProviders.PDataProvider, MyProject.DataAccess, Version=1.0.0.0, Culture=neutral' to a type. Assembly was not found. Make sure it was deployed and the name was not mistyped.
Source=Castle.Windsor
StackTrace:
at Castle.MicroKernel.SubSystems.Conversion.TypeNameConverter.GetType(String name)
at Castle.MicroKernel.SubSystems.Conversion.TypeNameConverter.PerformConversion(String value, Type targetType)
at Castle.MicroKernel.SubSystems.Conversion.DefaultConversionManager.PerformConversion(String value, Type targetType)
at Castle.MicroKernel.SubSystems.Conversion.DefaultConversionManager.PerformConversion[TTarget](String value)
at Castle.Windsor.Installer.DefaultComponentInstaller.SetUpComponents(IConfiguration[] configurations, IWindsorContainer container, IConversionManager converter)
at Castle.Windsor.Installer.DefaultComponentInstaller.SetUp(IWindsorContainer container, IConfigurationStore store)
at Program.<Main>$(String[] args) in C:\source\repos\F2\MyProject.F2\Program.cs:line 8
我的 Windsor.config 文件:
<?xml version="1.0" encoding="utf-8" ?>
<castle>
<components>
<component id="DataProvider"
service="MyProject.Interfaces.DataProviders.IDataProvider, MyProject.Interfaces"
type="MyProject.DataAccess.DataProviders.PDataProvider, MyProject.DataAccess, Version=1.0.0.0, Culture=neutral"></component>
</components>
</castle>
我的“MyProject.DataAccess.dll”位于用于调试和发布的“/bin”文件夹中,我正在手动复制它。 应将“MyProject.DataAccess.dll”复制到 Web API 应用程序可以“查看”或找到它的其他位置,或者“MyProject.DataAccess.dll”(.Net framework 4.8)的版本有问题。
任何人都可以阐明我所缺少的东西吗?
使用.NET 标准TFM 而不是 .NET Framework。 这样程序集将在运行时之间兼容。
我的印象是 .net 内核向后兼容
Net Core 背后的主要思想是允许向前移动和向后兼容。 他们(核心团队)在某种程度上试图实现源代码级兼容,以便更容易地从 .NETFx 中缓解,但这不是长期目标。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.