Багофича компилятора из VS 2013
От: IT Россия linq2db.com
Дата: 02.12.13 05:59
Оценка: 10 (2)
Видимо это надо куда-то зарепортить в MS, но не знаю куда. Может те, кто тут тусуются из команды шарпа увидят и определят куда надо.

Создаём консольный проект в VS 2012 и вбиваем такой код:

using System;
using System.Linq.Expressions;

namespace VS2013Compatibility
{
    class Program
    {
        static void Main(string[] args)
        {
            Expression<Func<string>> f1 = () => 0.ToString();
            Expression<Func<string>> f2 = () => 0l.ToString();

            var mi1 = ((MethodCallExpression)f1.Body).Method;
            var mi2 = ((MethodCallExpression)f2.Body).Method;
            var mi3 = typeof(int).GetMethod("ToString", new Type[0]);

            Console.WriteLine(mi1 == mi2);
            Console.WriteLine(mi1.DeclaringType);
            Console.WriteLine(mi2.DeclaringType);
            Console.WriteLine(mi3.DeclaringType);
        }
    }
}


Запускаем и получаем результат:

False
System.Int32
System.Int64
System.Int32


Теперь открываем тот же проект в VS 2013, пересобираем и запускаем. Получаем:

True
System.Object
System.Object
System.Int32


Причём интересно, что такое поведение характерно только для примитивных типов. Для того же Guid expression tree будет построен для object.ToString и в VS 2012. Хотя typeof(Guid).GetMethod("ToString", new Type[0]) выдаст результат для Guid.ToString. В общем, бардак.
Если нам не помогут, то мы тоже никого не пощадим.
Re: Багофича компилятора из VS 2013
От: Doc Россия http://andrey.moveax.ru
Дата: 02.12.13 08:29
Оценка: 33 (1)
Здравствуйте, IT, Вы писали:

IT>Видимо это надо куда-то зарепортить в MS, но не знаю куда.


https://connect.microsoft.com/ не?
или даже точнее
https://connect.microsoft.com/VisualStudio
Re: Багофича компилятора из VS 2013
От: -rsdn- Беларусь http://dsalodki.wix.com/resume
Дата: 02.12.13 12:12
Оценка: 44 (2)
Здравствуйте, IT, Вы писали:


IT>Запускаем и получаем результат:


IT>
IT>False
IT>System.Int32
IT>System.Int64
IT>System.Int32
IT>


в 2013 такой же результат, мот не с той ноги встали?
Re: Багофича компилятора из VS 2013
От: Sinix  
Дата: 02.12.13 12:24
Оценка: 33 (1)
Здравствуйте, IT, Вы писали:

IT>Теперь открываем тот же проект в VS 2013, пересобираем и запускаем. Получаем:

True
System.Object
System.Object
System.Int32


Угу, -rsdn- прав: VS 2013 express — не воспроизводится
Re[2]: Багофича компилятора из VS 2013
От: IT Россия linq2db.com
Дата: 02.12.13 13:50
Оценка:
Здравствуйте, -rsdn-, Вы писали:

R>в 2013 такой же результат, мот не с той ноги встали?


Я из-за этой хрени вчера до позна не ложился. Студию скачивал эволюционную Ultimate, потом вбивал ключик из MSDN.
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Багофича компилятора из VS 2013
От: Gremlin2 http://www.fb2library.net/
Дата: 02.12.13 15:36
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Угу, -rsdn- прав: VS 2013 express — не воспроизводится


Тоже не воспроизводится. VS 2013 Pro
Re: Багофича компилятора из VS 2013
От: IT Россия linq2db.com
Дата: 03.12.13 00:07
Оценка: 48 (3)
Здравствуйте, IT, Вы писали:

IT>В общем, бардак.


Разобрался. Это был великий и ужасный Microsoft (R) Roslyn C# Compiler
А я блин уже половину linq2db переписал, чтобы оно и под этой хренью работало
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Багофича компилятора из VS 2013
От: Sinix  
Дата: 03.12.13 04:57
Оценка:
Здравствуйте, IT, Вы писали:

IT>Разобрался. Это был великий и ужасный Microsoft (R) Roslyn C# Compiler

Офигеть! Блин, я уже додумался до проблем с reference assemblies, но самое очевидное — заменён компилятор — пропустил

Если верить разделу про рослин, фидбак они принимают тут, баги они просят отправлять сюда.
Re: Багофича компилятора из VS 2013
От: nikov США http://www.linkedin.com/in/nikov
Дата: 07.12.13 00:53
Оценка: 72 (1)
Здравствуйте, IT, Вы писали:

IT>Видимо это надо куда-то зарепортить в MS, но не знаю куда. Может те, кто тут тусуются из команды шарпа увидят и определят куда надо.


Я открыл баг по поводу этой проблемы (DevDiv 839441).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.