В списке‹Тип› отсутствуют данные сортировки типа взаимодействия — .NET Native

У меня есть проект, который отлично работает без цепочки инструментов .NET Native, но как только я его активирую, я получаю исключение об отсутствии данных сортировки типа взаимодействия:

В System.Collections.Generic.List`1[Type] отсутствуют данные сортировки типа взаимодействия. Чтобы включить маршаллинг данных типа взаимодействия, добавьте директиву MarshalObject в файл приложения rd.xml.

Я попытался добавить все пространство имен в файл Default.rd.xml:

<Namespace Name="System.Collections.Generic" Dynamic="Required All"/>

но это не помогает.

Что я должен туда добавить, чтобы проект работал с .NET Native?

В чем разница в включении одного типа/всего пространства имен? Есть ли влияние на производительность, память или что-то другое?


person Romasz    schedule 03.04.2017    source источник
comment
Не могли бы вы попробовать добавить MarshalObject="Required All" в свою декларацию?   -  person Kevin Gosse    schedule 03.04.2017
comment
Может быть, отсутствует информация о типе для конкретного типа параметра типа, а не List?   -  person Damien_The_Unbeliever    schedule 03.04.2017
comment
@KevinGosse В настоящее время я работаю, и я проверю это, когда вернусь домой. Даст вам знак.   -  person Romasz    schedule 03.04.2017
comment
@Damien_The_Unbeliever Хм, это может быть идеей, я тоже попробую так, когда вернусь домой.   -  person Romasz    schedule 03.04.2017
comment
Любая причина для понижения? Что не так в вопросе?   -  person Romasz    schedule 03.04.2017
comment
Кроме того, чтобы ответить на ваш другой вопрос, Is there any impact on performance, memory or something different?. Чем больше типов вы включите, тем больше будет двоичный файл. Очевидно, это немного влияет на потребление памяти, но основное отличие заключается во времени запуска.   -  person Kevin Gosse    schedule 03.04.2017
comment
@KevinGosse Я добавил следующее объявление: <Type Name="System.Collections.Generic.List" Dynamic="Required All" MarshalObject="Required All"/> не повезло - та же проблема. Я также добавил объявление для типа и той же ситуации. Завтра сделаю еще пару попыток.   -  person Romasz    schedule 03.04.2017
comment
@Damien_The_Unbeliever Я также добавил такой тип: <Type Name="TheType" Dynamic="Required All" MarshalObject="Required All"/>, помимо списка. Ситуация не изменилась. Я поиграю с этим немного позже.   -  person Romasz    schedule 03.04.2017
comment
Если вы запустите свой сценарий в DEBUG, но с включенным .NET Native, вы должны получить более полезные строки (у нас меньше шансов удалить информацию об имени типа и другие вещи). Свойства проекта › СТРОЙКА › Включить .NET Native   -  person MattWhilden    schedule 04.04.2017
comment
@MattWhilden В обычном режиме Debug он работает безупречно, в Release он просто разбился. Я уже включил .NET Native — вот откуда исходит исключение. Кажется, я нашел решение - мне не хватило скобок. Спасибо за отзыв.   -  person Romasz    schedule 04.04.2017
comment
@KevinGosse Глупая ошибка с моей стороны - я пропустил скобки {} - пробовал разные комбинации с List и забыл о List<>. Спасибо за отзыв.   -  person Romasz    schedule 04.04.2017


Ответы (1)


Я пробовал различные комбинации с Dynamic и MarshalObject для <Namespace...> и/или <Type...>, наконец, оказалось, что мне не хватает только скобок {}:

<Type Name="System.Collections.Generic.List{}" MarshalObject="Required All"/>
person Romasz    schedule 04.04.2017
comment
Рад, что тебя разблокировали. У нас есть небольшой конструктор директив по адресу dotnet.github.io/native/troubleshooter/type.html. это может немного помочь. Это выдаст правильный синтаксис, если ничего другого. :-) - person MattWhilden; 04.04.2017
comment
@MattWhilden Да, мои пользователи тоже будут счастливы :). Эти проклятые скобки заняли у меня всего несколько часов. Я использовал инструмент, который вы связали раньше, - это хороший вспомогательный инструмент. - person Romasz; 04.04.2017