Introduktion
Bärbar klassbibliotek problem kan uppstå när du installerar Microsoft Visual Studio 2012 uppdatering 2. Den här artikeln beskrivs de problem och deras lösningar.
Problem 1
Symptom
När du använder resurser för att bygga en bärbar klassbiblioteket projekt när du har installerat Visual Studio 2012 uppdatering 2, kan det hända att följande felmeddelande visas:
'System.Type' inte innehåller en definition för 'Paketet' och ingen metod med tillägget 'Paketet' acceptera ett första argument av typen 'System.Type' hittades (saknar du en med direktiv eller en sammansättningsreferens?)
Obs! Du kan få detta felmeddelande när du använder Microsoft Visual C#.
'Paket' är inte en medlem av 'System.Type'
Obs! Du kan få detta felmeddelande när du använder Microsoft Visual Basic.
Det här problemet uppstår när något av följande plattformar är riktad i projektet:
-
Microsoft.NET Framework 4.5 och .NET för Windows Store apps
-
.NET Framework 4.5 och Windows Phone 8
-
.NET Framework 4.5, .NET för Windows Store-appar och Windows Phone 8
Temporär lösning
Åtgärda designer genererade koden i resursfilen om du vill undvika det här problemet. Genom att dubbelklicka på felmeddelandet och gör sedan följande:
För Visual C#
-
Lägg till följande med hjälp av direktivet:
using System.Reflection;
-
Sök efter följande kod:
typeof(Resource1).Assembly
Ersätt Koden med följande kod:
typeof(Resource1).GetTypeInfo().Assembly
Följande kod är ett exempel som har det här problemet:
/// <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
-
Lägg till följande med hjälp av direktivet:
Imports System.Reflection;
-
Sök efter följande kod:
GetType(Resource1).Assembly
Ersätt Koden med följande kod:
GetType(Resource1).GetTypeInfo().Assembly
Följande kod är ett exempel som har det här problemet:
'''<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
Problem 2
Symptom
Du kan inte använda resurser för att bygga en bärbar klassbiblioteket projekt när du har installerat Visual Studio 2012 uppdatering 2. Dessutom får du ett av många olika felmeddelanden. Till exempel kan du få något av följande felmeddelanden:
Typen 'System.Net.HttpStatusCode' definieras i en sammansättning som inte refereras. Du måste lägga till en referens till sammansättningen ' System.Net, Version = 2.0.5.0 kultur = neutral, PublicKeyToken = 7cec85d7bea7798e Retargetable = Ja.
Det går inte att implicit konvertera typen 'System.Net.HttpStatusCode' till ' System.Net.HttpStatusCode [%programfiles%\Reference Assemblies\Microsoft\Framework\. NETPortable\v4.5\Profile\Profile78\System.Net.Primitives.dll]'
Observera att det här problemet uppstår när något av följande plattformar är riktad i projektet:
-
.NET Framework 4.5 och Windows Phone 8
-
.NET Framework 4.5, .NET för Windows Store-appar och Windows Phone 8
Orsak
Det här problemet uppstår eftersom Visual Studio 2012 uppdatering 2 installerades efter installationen av Windows Phone Software Development Kit (SDK) 8.0. Därför följande filer har tagits bort:
-
%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
Temporär lösning
Lös problemet genom att köra reparationsprogram för Visual Studio 2012. Gör så här:
-
Klicka på Start, Kontrollpanelen, programoch klicka sedan på program och funktioner.
-
Högerklicka på versionen av Visual Studio 2012 som du har installerat och klicka sedan på Ändra.
-
Klicka på Reparera när Visual Studio 2012 guiden öppnas.
Obs! Om du ställer in en ny miljö för utvecklare för att undvika det här problemet bör du installera Visual Studio 2012 uppdatering 2 innan du installerar Windows Phone 8.0 SDK.
Status
Microsoft har bekräftat att detta är ett problem i Microsoft-produkterna som nämns i avsnittet "Gäller".