代码之家  ›  专栏  ›  技术社区  ›  Rod

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

  •  1
  • Rod  · 技术社区  · 7 年前

    我找到了这篇关于Unity的演示文章。看起来很简单,但我得到以下错误:

    'System.Runtime.CompilerServices.Unsafe,版本=4.0.4.1, 区域性=中性,PublicKeyToken=b03f5f7f11d50a3a'或其 匹配程序集引用。(来自HRESULT的异常:0x8013100)

    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());
            }
        }
    }
    
    2 回复  |  直到 7 年前
        1
  •  9
  •   Brad Lucas    7 年前

    如果你的NuGet能够很好地处理你的项目,那么Jasen是正确的,但是我没有那么幸运(当我尝试重新添加包时,我得到了相同的错误)。

    修复此bug的方法是在app/web配置中为“缺失”程序集添加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> ...

        2
  •  3
  •   Jasen    7 年前

    当我试图复制该问题时,在我为运行NuGet更新后,错误消失了 System.Runtime.CompilerServices.Unsafe

        3
  •  0
  •   Ramon    6 年前

    就我而言,我的解决方案中有几个项目。我在其中一个项目中安装了Unity with Nuget,而在另一个项目中安装了Unity之后,出现了这个错误。

    <packages>
      <package id="System.Runtime.CompilerServices.Unsafe" version="4.7.0" targetFramework="net48" />
      <package id="Unity" version="5.11.2" targetFramework="net48" />
    </packages>
    

    一个项目是4.7.0,另一个是4.5 我更新到最新版本并解决了问题。

    您还可以右键单击Solution-Manage Nuget Packages for Solution并安装一个包,选择哪些项目只需一步就可以拥有该包。