1

次のコードは、Windows 7ではランタイムエラーをスローしますが、Windows8ではスローしません。

public struct PointD
{
  public double X { get; set; }
  public double Y { get; set; }

  public static implicit operator PointD(Point point)
  {
    return new PointD() { X = point.X, Y = point.Y };
  }
}

var p = new PointD();
XmlSerializer serializer = new XmlSerializer(typeof(PointD));
using (var stream = File.Create("test.xml"))
  serializer.Serialize(stream, p);

エラーは次のとおりです。

Unable to generate a temporary class (result=1).
error CS0012: The type 'System.Drawing.Point' is defined in an assembly that is not referenced.
You must add a reference to assembly 'System.Drawing, Version=4.0.0.0, 
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

何か案は?

4

2 に答える 2

1

問題の原因はわかりませんが、解決方法を見つけました。

この行を置き換えます

XmlSerializer serializer = new XmlSerializer(typeof(PointD));

このようなもので:

XmlSerializer serializer = new XmlSerializer(typeof(PointD), new Type[]{typeof(Point)});
于 2012-09-25T21:32:13.497 に答える
0

アセンブリと参照先の System.Drawing アセンブリの .net バージョンが同じであることを確認してください。スタートアップ アセンブリが .NET Framework 4 Client Profile に設定され、参照アセンブリが .NET Framework 4 (右クリック、プロパティ、アプリケーション) に設定されている場合に、このエラーが発生しました。

于 2012-09-25T18:47:36.287 に答える