บทนำ
ไลบรารีคลาสแบบพกพาปัญหาอาจเกิดขึ้นหลังจากที่คุณติดตั้งMicrosoft Visual Studio 2012 อัพเดต 2 บทความนี้อธิบายปัญหาเหล่านั้นและวิธีแก้ไขปัญหาของพวกเขา
ปัญหาที่ 1
อาการ
เมื่อคุณใช้ทรัพยากรเพื่อสร้างไลบรารีคลาสแบบพกพาโครงการหลังจากที่คุณติดตั้งVisual Studio 2012 อัพเดต 2คุณอาจได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:
'System.type ' ที่ซีเรียลไลซ์ไม่ประกอบด้วยคำนิยามสำหรับ 'แอสเซมบลี' และไม่สามารถพบวิธีการไม่มีนามสกุล 'แอสเซมบลี' ยอมรับเป็นอาร์กิวเมนต์แรกของชนิด 'system.type ' ที่ซีเรียลไลซ์ (คุณหายดีโดยใช้ไดเรกทีฟหรือการอ้างอิงแอสเซมบลีหรือไม่)
หมายเหตุ คุณได้รับข้อผิดพลาดนี้เมื่อคุณใช้ Microsoft Visual C#
'แอสเซมบลี' ไม่ใช่สมาชิกของ 'system.type 'ที่ซีเรียลไลซ์
หมายเหตุ คุณได้รับข้อผิดพลาดนี้เมื่อคุณใช้ Microsoft Visual Basic
ปัญหานี้เกิดขึ้นเมื่อแพลตฟอร์มแบบต่อไปนี้อย่างใดอย่างหนึ่งที่เป็นเป้าหมายในโครงการของคุณ:
-
Microsoft .NET Framework 4.5 และ.NET สำหรับ apps ร้านค้า Windows
-
.NET Framework 4.5 และ Windows Phone 8
-
.NET Framework 4.5, .NET สำหรับ apps ร้านค้า Windows และ Windows Phone 8
วิธีแก้ปัญหา
เมื่อต้องการหลีกเลี่ยงปัญหานี้ แก้ไขรหัสสร้างขึ้นโดยตัวออกแบบของแฟ้มทรัพยากร เมื่อต้องการทำเช่นนี้ คลิกสองครั้งข้อความแสดงข้อผิดพลาด และจากนั้น ทำตามขั้นตอนเหล่านี้:
สำหรับ Visual C#
-
เพิ่มต่อไปนี้โดยใช้ไดเรกทีฟ:
using System.Reflection;
-
ค้นหารหัสต่อไปนี้:
typeof(Resource1).Assembly
แทนที่รหัส ด้วยรหัสต่อไปนี้:
typeof(Resource1).GetTypeInfo().Assembly
รหัสต่อไปนี้เป็นตัวอย่างที่มีปัญหานี้:
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]internal static global::System.Resources.ResourceManager ResourceManager { get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PortableClassLibrary2.Resource1", typeof(Resource1).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
Visual Basic
-
เพิ่มต่อไปนี้โดยใช้ไดเรกทีฟ:
Imports System.Reflection;
-
ค้นหารหัสต่อไปนี้:
GetType(Resource1).Assembly
แทนที่รหัส ด้วยรหัสต่อไปนี้:
GetType(Resource1).GetTypeInfo().Assembly
รหัสต่อไปนี้เป็นตัวอย่างที่มีปัญหานี้:
'''<summary>
''' Returns the cached ResourceManager instance used by this class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Shared ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("PortableClassLibrary1.Resource1", GetType(Resource1).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
ปัญหาที่ 2
อาการ
คุณไม่สามารถใช้ทรัพยากรเพื่อสร้างไลบรารีคลาสแบบพกพาโครงการหลังจากที่คุณติดตั้งVisual Studio 2012 อัพเดต 2 นอกจากนี้ คุณอาจได้รับข้อความแสดงข้อผิดพลาดที่แตกต่างกันมาก ตัวอย่างเช่น คุณอาจได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:
มีกำหนดชนิด 'System.Net.HttpStatusCode' ในแอสเซมบลีที่ถูกอ้างอิง คุณต้องเพิ่มการอ้างอิงถึงแอสเซมบลี ' System.Net รุ่น = 2.0.5.0 วัฒนธรรม =ปานกลาง PublicKeyToken = 7cec85d7bea7798e, Retargetable =ใช่
ไม่สามารถนัยแปลงชนิด 'System.Net.HttpStatusCode' เป็น ' System.Net.HttpStatusCode [%programfiles%\Reference Assemblies\Microsoft\Framework\ ได้ NETPortable\v4.5\Profile\Profile78\System.Net.Primitives.dll]'
หมายเหตุปัญหานี้เกิดขึ้นเมื่อแพลตฟอร์มแบบต่อไปนี้อย่างใดอย่างหนึ่งที่เป็นเป้าหมายในโครงการของคุณ:
-
.NET Framework 4.5 และ Windows Phone 8
-
.NET Framework 4.5, .NET สำหรับ apps ร้านค้า Windows และ Windows Phone 8
สาเหตุ
ปัญหานี้เกิดขึ้นเนื่องจาก Visual Studio 2012 อัพเดต 2 ถูกติดตั้งหลังจากที่มีการติดตั้ง Windows Phone ซอฟต์แวร์พัฒนา Kit (SDK) 8.0 ดังนั้น จึง ถูกลบแฟ้มต่อไปนี้:
-
%programfiles%\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.5\Profile\Profile49\System.Net.dll
-
%programfiles%\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.5\Profile\Profile49\System.ServiceModel.dll
-
%programfiles%\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.5\Profile\Profile78\System.Net.dll
-
%programfiles%\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.5\Profile\Profile78\System.ServiceModel.dll
วิธีแก้ปัญหา
เมื่อต้องการแก้ไขปัญหานี้ รันโปรแกรมซ่อมแซม 2012 Studio แสดงผล เมื่อต้องการทำเช่นนี้ ให้ทำตามขั้นตอนเหล่านี้
-
คลิกเริ่ม, 'แผงควบคุม'คลิก คลิกโปรแกรมและคลิกโปรแกรมและคุณลักษณะ'
-
คลิกขวาที่รุ่นของ Visual Studio 2012 ที่คุณได้ติดตั้ง และจากนั้น คลิกเปลี่ยนแปลง
-
คลิกซ่อมแซมเมื่อเปิดวิซาร์ดการตั้ง 2012 Studio ที่มองเห็น
หมายเหตุ ถ้าคุณตั้งค่าสภาพแวดล้อมการพัฒนาใหม่ เพื่อหลีกเลี่ยงปัญหานี้ คุณควรติดตั้ง Visual Studio 2012 อัพเดต 2 ก่อนที่คุณติดตั้ง Windows Phone 8.0 SDK
สถานะ
Microsoft ยืนยันว่านี่เป็นปัญหาในผลิตภัณฑ์ของ Microsoft ซึ่งแสดงไว้ในส่วน "นำไปใช้กับ"