1

我正在为版本的正确依赖版本控制而苦苦挣扎。我在一些文章中读到,库中对 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; }
    }
}

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

你能解释一下为什么我的测试不起作用吗?这一点,其他 SO 答案 ( 1 ) 和 haacked on versioning interfaces的文章真的让我很困惑。

4

0 回答 0