Úvod
Přenosné knihovny tříd problémy mohou nastat po instalaci aplikace Microsoft Visual Studio 2012 aktualizace 2. Tento článek popisuje tyto problémy a jejich řešení.
Problém 1
Příznaky
Při použití zdroje pro vytvoření projektu knihovny přenosných tříd po instalaci sady Visual Studio 2012 Update 2, můžete obdržet následující chybové zprávy:
"System.Type" neobsahuje definici pro "Sestavení" a žádná rozšiřující metoda "Sestavení" přijímající první argument typu "System.Type" nebyl nalezen (chybějící using direktiva nebo odkaz na sestavení?)
Poznámka: Tato chyba se může zobrazit, pokud používáte Microsoft Visual C#.
"Sestavení" není členem "System.Type"
Poznámka: Tato chyba se může zobrazit, pokud používáte Microsoft Visual Basic.
K tomuto problému dochází, pokud jeden z následujících platformách cílový projekt:
-
Rozhraní Microsoft .NET Framework 4.5 a .NET pro aplikace pro Windows Store
-
Rozhraní .NET Framework 4.5 a Windows Phone 8
-
Rozhraní .NET Framework 4.5, .NET pro aplikace pro Windows Store a Windows Phone 8
Jak potíže obejít
Chcete-li tento problém vyřešit, opravte návrhářem generovaný kód souboru prostředků. To provedete poklepáním na chybovou zprávu a potom postupujte takto:
Pro jazyk Visual C#
-
Přidejte následující pomocí direktivy:
using System.Reflection;
-
Vyhledejte následující kód:
typeof(Resource1).Assembly
Tento kód nahraďte následující kód:
typeof(Resource1).GetTypeInfo().Assembly
Následující kód je příklad, který má tento problém:
/// <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
-
Přidejte následující pomocí direktivy:
Imports System.Reflection;
-
Vyhledejte následující kód:
GetType(Resource1).Assembly
Tento kód nahraďte následující kód:
GetType(Resource1).GetTypeInfo().Assembly
Následující kód je příklad, který má tento problém:
'''<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ém 2
Příznaky
Zdroje nelze použít pro vytvoření projektu knihovny přenosných tříd po instalaci sady Visual Studio 2012 aktualizace 2. Navíc můžete obdržet jednu z mnoha různých chybových zpráv. Například můžete obdržet jednu z následujících chybových zpráv:
Typ "System.Net.HttpStatusCode" je definován v sestavení, které není odkazováno. Je nutné přidat odkaz na sestavení "System.Net, verze = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e Retargetable = Yes'.
Nelze implicitně provést převod typu "System.Net.HttpStatusCode" na "System.Net.HttpStatusCode [%programfiles%\Reference Assemblies\Microsoft\Framework\. NETPortable\v4.5\Profile\Profile78\System.Net.Primitives.dll] "
Poznámka: k tomuto problému dochází, pokud jeden z následujících platformách cílový projekt:
-
Rozhraní .NET Framework 4.5 a Windows Phone 8
-
Rozhraní .NET Framework 4.5, .NET pro aplikace pro Windows Store a Windows Phone 8
Příčina
K tomuto problému dochází, protože Visual Studio 2012 aktualizace 2 byl nainstalován po instalaci Windows Phone Software Development Kit (SDK) 8.0. Proto byly odstraněny následující soubory:
-
%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
Jak potíže obejít
Chcete-li tento problém vyřešit, spusťte program Visual Studio 2012 opravy. Chcete-li to provést, postupujte takto:
-
Klepněte na tlačítko Start, na příkaz Ovládací panely, klepněte na příkaz programya potom klepněte na tlačítko programy a funkce.
-
Klepněte pravým tlačítkem myši na verzi Visual Studio 2012, který jste nainstalovali a potom klepněte na tlačítko změnit.
-
Otevře se Průvodce 2012 instalace aplikace Visual Studio a klepněte na tlačítko opravit .
Poznámka: Pokud nastavíte nové prostředí developer, aby se zabránilo tomuto problému, nainstalujte Visual Studio 2012 aktualizace 2 před instalací sady SDK Windows Phone 8.0.
Stav
Společnost Microsoft potvrdila, že se jedná o problém v produktech společnosti Microsoft, které jsou uvedeny v části "Platí pro".