Что происходит с совместимостью сборок и версий классов? - PullRequest
1 голос
/ 18 июня 2019

Я борюсь с правильными версиями зависимостей на релизах.Я читал в некоторых статьях, что каждое изменение AssemblyVersion в библиотеке приведет к необходимости перестроения всех сборок, ссылающихся на эту библиотеку.Если это правда, мне нужно быть очень осторожным при разработке циклов выпуска зависимых сборок, верно?

Я хотел проверить тезис сам и ... ну, я заметил, что это вовсе не правда.

Я создал консольное приложение, которое ссылалось на dep1.dll (сборочная версия 1.0.0.0) и собрал его.Затем я изменил dep1.dll на версию 2.0.0.0, собрал его и заменил на версию 1.0.0.0.При запуске консольного приложения я ожидал ошибку «Не удалось найти сборку dep1.dll с версией 1.0.0.0» .И знаешь, что?Ничего особенного не произошло, приложение использовало библиотеку так, как будто оно предназначалось для этой версии с самого начала.

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 об интерфейсах управления версиями действительно смутили меня.

...