Как стать автором
Обновить

Комментарии 13

Указание всем сборкам одной и той же версии независимо от содержания представляется мне каким-то мрачным костылем. Который, возможно, решил когда-то какую-то частную проблему, зато обеспечил огромное кол-во гемороя на годы вперед...

Майкрософт вообще любит костыли. Вспомнился старый пост про х64… Логика там конечно примерно такая же: https://habr.com/ru/post/102179/

Я тоже так подумал) Но maintainer MSBuild-а вроде достаточно уверено говорил, что это удобно и всё такое.

Нормальные люди придумали SemVer, чтобы было удобно и не нужно было зависеть от конкретной версии

Любой программист будет на публике хвалить свой продукт. Уверен, в кулуарах они сами плюются с того, как задолбало это легаси решение. :)

Как говорилось в одном классическом тексте,

Let’s be very, very clear about one thing: .NET will eliminate DLL Hell. 

(((

Ужас какой. А как тогда разные "версии" этой библиотеки ставятяся, если номер версии один и тот же? Какой-то другой идентификатор есть?

Что вы имеете ввиду под "ставятся"? В проекте анализатора у нас указана именно версия пакета (они отличаются). На рантайме обычно бралась библиотека, которая лежала рядом с исполняемым файлом, то есть правильная. А тут нам особенности GAC нанесли удар)

Нужно просто резолвиться самостоятельно )

    internal static class Program
    {
        private static void Main(string[] args)
        {
            AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
        }

        private static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs e)
        {
            if (e.Name.StartsWith("Microsoft.Build."))
            {
                // искать в локальной папке
            }
            return null;
        }
    }

А вы действительно пробовали этот способ? Указанное вами событие, согласно документации, возникает, когда сборку загрузить не получилось.

А в указанном в статье случае она прекрасно загружается :).

Мы пробовали даже просто в начале Main загрузить сборку с указанием прямо конкретного пути, но она всё равно берётся из GAC.

Да, точно, я пробовал как раз когда мне нужно было отсутствующую дозагрузить.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий