.NET Standard + .NET Framework:无法加载文件或程序集 'Ninject'
.NET Standard + .NET Framework: could not load file or assembly 'Ninject'
情况
我有以下解决方案结构:
- solution
- "WPF Client" PROJECT[.NET Framework 4.6.1]
(has ref to: "Core Logic" PROJECT, "Service Provider" PROJECT)
- "Core Logic" PROJECT[.NET Framework 4.6.1]
(has ref to: "Service Provider" PROJECT)
- "Service Provider" PROJECT[.NET Standard 2.0]
(has nuget: "Ninject")
我有关注 类
IoC.cs 服务提供商项目
public static class IoC
{
private static readonly IKernel mKernel;
static IoC()
{
mKernel = new StandardKernel();
Setup();
}
private static void Setup()
{
mKernel.Bind<IInput>().To<Input>();
}
public static T Get<T>()
{
return mKernel.Get<T>();
}
}
MyViewModel.cs 核心逻辑项目
public sealed class MyViewModel
{
...
public void MyViewModelMethod()
{
var a = IoC.Get<IInput>();
}
...
}
MyView.xaml.cs 在 WPF 客户端项目
public partial class MyView : UserControl
{
public MyView()
{
InitializeComponent();
var viewModel = new MyViewModel();
viewModel.MyViewModelMethod();
}
}
问题
每当我尝试 运行 我的项目时,它都会抛出以下错误:
could not load file or assembly 'Ninject'
编辑
我认为这与 ninject 没有任何关系...而是 .net 标准 + .net 4.6.1 问题。
我这样想的原因是:首先我尝试了其他 IoC 容器,它们抛出了相同的错误消息。但它并没有就此结束......每当我在我的 .NET Standard 项目上安装任何 NuGet 包时,它似乎无法将其程序集加载到我的客户端项目中(.net 4.6.1)
问题是:这个问题有解决办法吗?
找到解决方案!
您必须将您的 packages.config
迁移到您的 .csproj 文件中。
有关更多详细信息,请查找 here。
情况
我有以下解决方案结构:
- solution
- "WPF Client" PROJECT[.NET Framework 4.6.1]
(has ref to: "Core Logic" PROJECT, "Service Provider" PROJECT)
- "Core Logic" PROJECT[.NET Framework 4.6.1]
(has ref to: "Service Provider" PROJECT)
- "Service Provider" PROJECT[.NET Standard 2.0]
(has nuget: "Ninject")
我有关注 类
IoC.cs 服务提供商项目
public static class IoC
{
private static readonly IKernel mKernel;
static IoC()
{
mKernel = new StandardKernel();
Setup();
}
private static void Setup()
{
mKernel.Bind<IInput>().To<Input>();
}
public static T Get<T>()
{
return mKernel.Get<T>();
}
}
MyViewModel.cs 核心逻辑项目
public sealed class MyViewModel
{
...
public void MyViewModelMethod()
{
var a = IoC.Get<IInput>();
}
...
}
MyView.xaml.cs 在 WPF 客户端项目
public partial class MyView : UserControl
{
public MyView()
{
InitializeComponent();
var viewModel = new MyViewModel();
viewModel.MyViewModelMethod();
}
}
问题
每当我尝试 运行 我的项目时,它都会抛出以下错误:
could not load file or assembly 'Ninject'
编辑
我认为这与 ninject 没有任何关系...而是 .net 标准 + .net 4.6.1 问题。
我这样想的原因是:首先我尝试了其他 IoC 容器,它们抛出了相同的错误消息。但它并没有就此结束......每当我在我的 .NET Standard 项目上安装任何 NuGet 包时,它似乎无法将其程序集加载到我的客户端项目中(.net 4.6.1)
问题是:这个问题有解决办法吗?
找到解决方案!
您必须将您的 packages.config
迁移到您的 .csproj 文件中。
有关更多详细信息,请查找 here。