Ievads
Portatīvā klašu bibliotēku problēmas var rasties, instalējot Microsoft Visual Studio 2012. gada 2. atjauninājumu. Šajā rakstā ir izklāstīts šīs problēmas un to risinājumi.
1. problēma
Pazīmes
Lietojot resursi portatīvo klases bibliotēkas projekts veidot pēc instalēšanas Visual Studio 2012 Update 2, varat saņemt šādus kļūdas ziņojumus:
'System.Type' nesatur definīcija "Mezgls" un "Mezgls" pieņem pirmais arguments "System.Type" tipa paplašinājumu metodi nevar atrast (trūkst datu, izmantojot direktīvas vai montāžas atsauce?)
Piezīme. Šī kļūda rodas, ja izmantojat Microsoft Visual c#.
"Mezgls" nav iekļauts "System.Type"
Piezīme. Šī kļūda rodas, ja izmantojat Microsoft Visual Basic.
Šī problēma rodas, ja kādu no šādām platformām paredzēta projekta:
-
Microsoft .NET Framework 4.5 un .NET Windows veikala programmām
-
.NET Framework 4.5 un Windows Phone 8
-
.NET Framework 4.5 .NET Windows veikala programmām un Windows Phone 8
Risinājums
Lai novērstu šo problēmu, labot noformētājs ģenerēts kods resursu fails. Lai to izdarītu, veiciet dubultklikšķi uz kļūdas ziņojumu un pēc tam rīkojieties šādi:
Par Visual c#
-
Pievienojiet šādu direktīvu, izmantojot:
using System.Reflection;
-
Atrodiet šādu kodu:
typeof(Resource1).Assembly
Nomainiet šo kodu ar šādu kodu:
typeof(Resource1).GetTypeInfo().Assembly
Šis kods ir piemērs, kurā ir šī problēma:
/// <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
-
Pievienojiet šādu direktīvu, izmantojot:
Imports System.Reflection;
-
Atrodiet šādu kodu:
GetType(Resource1).Assembly
Nomainiet šo kodu ar šādu kodu:
GetType(Resource1).GetTypeInfo().Assembly
Šis kods ir piemērs, kurā ir šī problēma:
'''<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
Problēma 2
Pazīmes
Resursu nevar izmantot, lai izveidotu portatīvo klases bibliotēkas projektu pēc instalēšanas Visual Studio 2012 Update 2. Turklāt, jūs, iespējams, saņemsit daudzus dažādus kļūdu ziņojumus. Piemēram, varat saņemt kādu no šiem kļūdas ziņojumiem:
Ierakstiet "System.Net.HttpStatusCode" ir definēts montāžas nav atsauces. Jāpievieno atsauce uz montāžas ' System.Net, Version = 2.0.5.0 Culture neutral, PublicKeyToken = = 7cec85d7bea7798e Retargetable = Jā.
Nevar tieši konvertēt tipu 'System.Net.HttpStatusCode' ' System.Net.HttpStatusCode [%programfiles%\Reference Assemblies\Microsoft\Framework\. NETPortable\v4.5\Profile\Profile78\System.Net.Primitives.dll] "
Ievērojiet, ka šī problēma rodas, ja kādu no šādām platformām paredzēta projekta:
-
.NET Framework 4.5 un Windows Phone 8
-
.NET Framework 4.5 .NET Windows veikala programmām un Windows Phone 8
Cēlonis
Šī problēma rodas tādēļ, ka Visual Studio 2012 Update 2 tika uzstādīta pēc instalēšanas Windows Phone programmatūras izstrādes komplekts (SDK) 8.0. Tādēļ ir izdzēsti šādi faili:
-
%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
Risinājums
Lai novērstu šo problēmu, palaidiet programmu Visual Studio 2012 remonts. Lai to izdarītu, izpildiet tālāk norādītās darbības.
-
Noklikšķiniet uz Sākt, noklikšķiniet uz Vadības panelis, noklikšķiniet uz programmasun pēc tam noklikšķiniet uz programmas un līdzekļi.
-
Ar peles labo pogu noklikšķiniet uz Visual Studio 2012 instalētās versijas un pēc tam noklikšķiniet uz mainīt.
-
Atverot Visual Studio 2012 iestatīšanas vedni, noklikšķiniet uz izlabot .
Piezīme. Iestatot jauna izstrādātāja vidē, lai novērstu šo problēmu, ir jāinstalē Visual Studio 2012 Update 2 pirms instalējat Windows Phone 8.0 SDK.
Statusa
Korporācija Microsoft ir apstiprinājusi, ka šī problēma pastāv Microsoft produktos, kas ir minēti sadaļā "Attiecas uz".