程序集和类版本兼容性到底是怎么回事?

时间:2019-06-18 20:26:58

标签: c# .net clr versioning fileversioninfo

我正在努力对发行版进行适当的依赖版本控制。我已经读过一些文章,对库中的AssemblyVersion进行的任何更改都将导致需要重建所有引用此库的程序集。如果是这样,在设计依赖程序集的发布周期时我需要格外小心,对吧?

我想亲自验证论文,...,我发现这根本不是事实。

我制作了一个引用dep1.dll(程序集版本1.0.0.0)的控制台应用程序并进行了构建。然后,我将dep1.dll更改为2.0.0.0版,进行了构建并将其与1.0.0.0版交换。运行控制台应用程序时,我预期会出现错误“找不到版本为1.0.0.0的程序集dep1.dll” 。你知道吗?没什么特别的事情,该应用程序使用该库就像从一开始就以该版本为目标。

ConsoleApp1 / Program.cs

using dep1;
using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var a = new Class1();
            a.Prop1 = "asdf";
            Console.WriteLine(a.Prop1);
        }
    }

    public class Implementation : Interface1
    {
        public int Super { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
    }
}

dep1 / Class1.cs

namespace dep1
{
    public class Class1
    {
        public string Prop1 { get; set; }
    }

    public interface Interface1
    {
        int Super { get; set; }
    }
}

如您所见,接口也是如此。

能否请您解释为什么我的考试不起作用?这个,其他答案(1)和haacked on versioning interfaces的文章真的让我感到困惑。

0 个答案:

没有答案