C# Unity 错误:无法加载文件或程序集

Rod*_*Rod 6 c# unity-container

我在 Unity 上找到了这篇演示文章。看起来很简单,但我收到以下错误:

无法加载文件或程序集“System.Runtime.CompilerServices.Unsafe,Version=4.0.4.1,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)

https://www.tutorialsteacher.com/ioc/register-and-resolve-in-unity-container

using System;
using Unity;

namespace UnityContainerDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var container = new UnityContainer();
            container.RegisterType<ICar, BMW>();// Map ICar with BMW 

            //Resolves dependencies and returns Driver object 
            Driver drv = container.Resolve<Driver>();
            drv.RunCar();
        }
    }

    public interface ICar
    {
        int Run();
    }

    public class BMW : ICar
    {
        private int _miles = 0;

        public int Run()
        {
            return ++_miles;
        }
    }

    public class Ford : ICar
    {
        private int _miles = 0;

        public int Run()
        {
            return ++_miles;
        }
    }

    public class Audi : ICar
    {
        private int _miles = 0;

        public int Run()
        {
            return ++_miles;
        }

    }
    public class Driver
    {
        private ICar _car = null;

        public Driver(ICar car)
        {
            _car = car;
        }

        public void RunCar()
        {
            Console.WriteLine("Running {0} - {1} mile ", _car.GetType().Name, _car.Run());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 9

如果您的 NuGet 与您的项目配合得很好,Jasen 是正确的,但我没那么幸运(当我尝试重新添加包时,我遇到了同样的错误)。

修复该错误的方法是为应用程序/网络配置中的“缺失”程序集添加一个dependentAssembly 条目(这是 NuGet 安装背后的魔法,应该自动发生)。

<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" /> </dependentAssembly> ...


Jas*_*sen 4

当我尝试复制该问题时,在运行System.Runtime.CompilerServices.Unsafe.

  • 看起来像是最新 Unity 版本(v5.9.3)的新依赖项,并且依赖包的某个版本存在配置问题。如果您想了解更多信息,可以阅读 /sf/ask/15051851/ located- assemblys-manifest-definition-does-not-match-the- assembly-reference 和 https://stackoverflow.com /问题/20978519/程序集清单定义不匹配程序集参考 (2认同)