Что означает «не может быть маршаллирован маршалером времени выполнения»? - PullRequest
16 голосов
/ 07 октября 2011

При компиляции приложения на C # ASP.NET я получаю странные предупреждения из Visual Studio 2008.Может ли кто-нибудь указать мне объяснение (в словах нескольких слогов, если возможно) того, что означает это предупреждение?

По крайней мере один из аргументов для 'IasHelper.Process' не может быть маршалирован во время выполненияупаковщик.Следовательно, такие аргументы будут передаваться как указатель и могут потребовать небезопасного кода для манипуляции.

Ответы [ 2 ]

10 голосов
/ 07 октября 2011

Класс Marshal отвечает за преобразование неуправляемого кода / классов в управляемые классы и наоборот. См. документацию по MSDN класса маршала .

Если вы включили некоторую сборку взаимодействия для доступа к COM-объекту или тому подобное, может случиться так, что маршал (и) не сможет позаботиться об операции. Таким образом, в вашей программе работают квази-неуправляемые части, которые, в свою очередь, могут вызывать такие неприятные вещи, как переполнение буфера и тому подобное. Таким образом, вы покидаете безопасный, удобный мир управляемого кода и вступаете в чертову, опасную область C / C ++ и их страшных братьев. : -)

8 голосов
/ 07 октября 2011

Звучит так, как будто вы ссылаетесь на объект ActiveX, и это приводит к тому, что tlbimp.exe испытывает трудности с маршалингом аргументов некоторых методов и членов структуры между COM и .NET.

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

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