Имаме решение, което се компилира перфектно във VS2013, но се проваля с грешка при компилация във VS2015.
Проблемът е стеснен до това:
Имаме c# проект A, който дефинира обща структура като тази:
public struct MyStruct<T>
{
public MyStruct(T b)
{
}
}
Имаме c++/cli проект B, който дефинира функция като тази:
public ref class Class1
{
public:
void BadMethod(MyStruct<int> ^){};
};
И накрая имам c# проект за команден ред 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, но грешката остава.
Използването на общ клас вместо структура изглежда работи.