C# 位图。保存错误时出现空异常,但它已明确实例化

C# 位图。保存错误时出现空异常,但它已明确实例化,c#,bitmap,memorystream,system.drawing.imaging,C#,Bitmap,Memorystream,System.drawing.imaging,在升级到Unity和Visual Studio之前,我有一个简单的代码块,运行时没有错误,但在更新之后,完全相同的逻辑会引发NullReferenceException 调用BitMap.Save()时会引发异常,但我已验证所有输入都已正确实例化,并且我可以在调试期间检查所有关联对象,并且无法识别任何空值。在本例中,NullReferenceException非常模糊,我怀疑它与Unity的更新有关 请不要关闭“”的副本,如我的副本。这似乎是Bitmap的内部问题,我正在寻找有关如何解决此问题的

在升级到Unity和Visual Studio之前,我有一个简单的代码块,运行时没有错误,但在更新之后,完全相同的逻辑会引发
NullReferenceException

调用
BitMap.Save()
时会引发异常,但我已验证所有输入都已正确实例化,并且我可以在调试期间检查所有关联对象,并且无法识别任何空值。在本例中,
NullReferenceException
非常模糊,我怀疑它与Unity的更新有关

请不要关闭“”的副本,如我的副本。这似乎是
Bitmap
的内部问题,我正在寻找有关如何解决此问题的具体指导

Bitmap newBmp=新位图(16,16);
对于(int i=0;i<16;i++)
{
对于(int j=0;j<16;j++)
{
设置像素(i,j,颜色。蓝色);
}
}
使用(MemoryStream ms=new MemoryStream())
{
newBmp.Save(ms,ImageFormat.Bmp);//空??
//如果ms没有出现问题,就多做些事情
}
异常详细信息,在
newBmp.Save()上引发

注意:无论是
newBmp
还是
ms
都不为空,并且上面的逻辑已将每个像素设置为蓝色

NullReferenceException:对象引用未设置为对象的实例
System.Drawing.ComIStreamMarshaler+ManagedToNativeWrapper..cctor()(位于:0)
作为TypeInitializationException重试:“ManagedToNativeWrapper”的类型初始值设定项引发异常。
System.Drawing.ComIStreamMarshaler.MarshallManagedToNative(System.Object managedObj)(at:0)
System.Drawing.Image.Save(System.IO.Stream、System.Drawing.Imaging.ImageCodeInfo编码器、System.Drawing.Imaging.EncoderParameters encoderParams)(at:0)
System.Drawing.Image.Save(System.IO.Stream、System.Drawing.Imaging.ImageFormat格式)(at:0)
(通过检查调用包装器远程处理)System.Drawing.Image.Save(System.I

不久前我将System.Drawing.dll的版本拉入Unity项目,结果发现该版本与Unity的新版本不兼容。我们通过删除dll并添加“csc.rsp”解决了此问题文件添加到资产文件夹中,并添加了行
-r:System.Drawing.dll
,我认为该行会自动使用适当的版本。

“我知道null的含义,并且我正在明确地实例化所有内容”--框架不是通过
NullReferenceException
来取乐的。有些东西是空的。坦率地说,大多数情况下,当有人发帖询问NRE时,他们只是认为他们已经消除了空值的可能性。规范复制的全部目的是让他们克服这种心态并帮助他们调试您将从发布的堆栈跟踪中注意到,您有一个类型初始值设定项正在引发异常。类型初始值设定项的声明与通常调用它们的代码相距很远,因此您发布的代码本身不必具有任何空值,就可以具有空值。您我们需要更多地调试代码,使用规范问答中的建议。如果您已经确定了空值,但仍然需要帮助,请发布一个问题,并附上适当的说明,说明您迄今为止所做的一切,以及在避免空值方面具体需要什么帮助。当您的调试器出现异常时,请查看InnerException。这很有可能会揭示实际问题。@克里斯:投票重新打开这两个帖子绝对不是正确的做法。无论你对问题的质量和性质有何看法,作者在重新发布时违反了网站规则。不要在必要时投票重新打开这两个帖子,从而进一步加剧问题本来应该只有一个。投票重新打开一个你认为应该删除的帖子真的没有任何意义。@Chrischaller也许也应该减少盲目关闭别人帖子的动机。至少让所有者有机会解释它不是重复的,重新措辞,或者同意并继续。不应该提供Rep对于那些让别人讨厌使用的人来说,如果有人把你的帖子误认为是骗人的或者是离题的,但却拥有了所有的权力,而没有提出任何问题,那么在没有任何指导或反驳能力的情况下结束你的帖子是非常令人愤怒的。没有什么比以这种方式被贬低和沉默更糟糕的了。进行投票,提醒所有者,让他们插话。让它成为一个好消息如有必要,请命名。
NullReferenceException: Object reference not set to an instance of an object
System.Drawing.ComIStreamMarshaler+ManagedToNativeWrapper..cctor () (at <556bd4f081384ff9b1658a316bdf6616>:0)
Rethrow as TypeInitializationException: The type initializer for 'ManagedToNativeWrapper' threw an exception.
System.Drawing.ComIStreamMarshaler.MarshalManagedToNative (System.Object managedObj) (at <556bd4f081384ff9b1658a316bdf6616>:0)
System.Drawing.Image.Save (System.IO.Stream stream, System.Drawing.Imaging.ImageCodecInfo encoder, System.Drawing.Imaging.EncoderParameters encoderParams) (at <556bd4f081384ff9b1658a316bdf6616>:0)
System.Drawing.Image.Save (System.IO.Stream stream, System.Drawing.Imaging.ImageFormat format) (at <556bd4f081384ff9b1658a316bdf6616>:0)
(wrapper remoting-invoke-with-check) System.Drawing.Image.Save(System.I