Я борюсь с правильными версиями зависимостей на релизах.Я читал в некоторых статьях, что каждое изменение 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 об интерфейсах управления версиями действительно смутили меня.