У нас есть решение, которое отлично компилируется в VS2013, но выдает ошибку компиляции в VS2015.
Проблема была сужена до этого:
У нас есть проект С# A, который определяет общую структуру следующим образом:
public struct MyStruct<T>
{
public MyStruct(T b)
{
}
}
У нас есть проект C++/cli B, который определяет такую функцию:
public ref class Class1
{
public:
void BadMethod(MyStruct<int> ^){};
};
И, наконец, у меня есть проект командной строки С# C, ссылающийся на проекты A и B и пытающийся вызвать BadMethod:
class Program
{
static void Main(string[] args)
{
var c = new Class1();
var s = new MyStruct<int>(0);
c.BadMethod(s);
}
}
В Visual Studio 2013 (и старше) это компилируется без проблем, однако в Visual Studio 2015 мы получаем:
application\Program.cs(18,15,18,24): error CS0570: 'Class1.BadMethod(?)' is not supported by the language
Я попытался скомпилировать проект c++/cli с помощью набора инструментов Visual Studio 2015, но ошибка остается.
Использование универсального класса вместо структуры, кажется, работает.