【发布时间】:2011-10-07 08:35:12
【问题描述】:
在编译 C# ASP.NET 应用程序时,我收到了来自 Visual Studio 2008 的奇怪警告。谁能指出我对这个警告的含义的解释(如果可能的话,用几个音节的话)?
“IasHelper.Process”的至少一个参数不能是 由运行时封送处理程序封送。因此,这样的论点将是 作为指针传递,可能需要不安全的代码来操作。
【问题讨论】:
标签: c# asp.net visual-studio-2008
在编译 C# ASP.NET 应用程序时,我收到了来自 Visual Studio 2008 的奇怪警告。谁能指出我对这个警告的含义的解释(如果可能的话,用几个音节的话)?
“IasHelper.Process”的至少一个参数不能是 由运行时封送处理程序封送。因此,这样的论点将是 作为指针传递,可能需要不安全的代码来操作。
【问题讨论】:
标签: c# asp.net visual-studio-2008
Marshal 类负责将非托管代码/类转换为托管类,反之亦然。见the msdn documentation of the Marshal Class。
如果您包含一些互操作程序集来访问 COM 对象等,则 Marshal(l)er 可能无法处理该操作。因此,您的程序中运行着准非托管部分,这反过来又会导致令人讨厌的事情,例如缓冲区溢出等。因此,您离开了安全、舒适的托管代码世界,进入了 C/C++ 及其可怕的兄弟们的通风、危险领域。 :-)
【讨论】:
听起来您正在引用一个 ActiveX 对象,并且它使 tlbimp.exe 很难编组 COM 和 .NET 之间的一些方法和结构成员的参数。
这可能发生在干净的构建期间,因为这是 tlbimp 必须运行的唯一时间。尝试在您没有先清理的地方进行正常构建。
【讨论】: