Aanpassingen voor retargeting voor migratie naar .NET Framework 4.5.x

Dit artikel bevat de compatibiliteitsproblemen met apps die zijn geïntroduceerd in .NET Framework 4.5, 4.5.1 en 4.5.2.

.NET Framework 4.5

ASP.NET

MachineKey.Encode- en MachineKey.Decode-methoden zijn nu verouderd

Bijzonderheden

Deze methoden zijn nu verouderd. Compilatie van code die deze methoden aanroept, produceert een compilerwaarschuwing.

Suggestie

De aanbevolen alternatieven zijn Protect(Byte[], String[]) en Unprotect(Byte[], String[]). U kunt de buildwaarschuwingen ook onderdrukken of voorkomen door een oudere compiler te gebruiken. De API's worden nog steeds ondersteund.

Naam Waarde
Omvang Minderjarige
Versie 4.5
Typologie Hergericht adverteren

Betreffende API's

De afstand van de ASP.NET tekstvakken met meerdere regels is gewijzigd bij het gebruik van de AntiXSSEncoder.

Bijzonderheden

In .NET Framework 4.0 werden er extra regels ingevoegd tussen de regels van een meerregelig tekstvak bij een postback, indien de System.Web.Security.AntiXss.AntiXssEncoder werd gebruikt. In .NET Framework 4.5 zijn deze extra regeleinden niet opgenomen, tenzij de webapplicatie specifiek is gericht op deze versie.

Suggestie

Houd er rekening mee dat 4.0-web-apps die opnieuw zijn gericht op .NET Framework 4.5 mogelijk tekstvakken met meerdere regels hebben verbeterd om geen extra regeleinden meer in te voegen. Als dit niet wenselijk is, kan de app zich oud gedragen wanneer deze op .NET Framework 4.5 draait door te mikken op .NET Framework 4.0.

Naam Waarde
Omvang Minderjarige
Versie 4.5
Typologie Hergericht adverteren

WebUtility.HtmlEncode en WebUtility.HtmlDecode ruilen BMP correct uit en terug

Bijzonderheden

Voor toepassingen die gericht zijn op .NET Framework 4.5, worden tekens die buiten de BMP-roundtrip (Basic Multilingual Plane) vallen correct uitgevoerd wanneer ze worden doorgegeven aan de HtmlDecode(String) methoden.

Suggestie

Deze wijziging mag geen effect hebben op de huidige toepassingen, maar als u het oorspronkelijke gedrag wilt herstellen, stelt u het targetFramework kenmerk van het <httpRuntime> element in op een andere tekenreeks dan '4,5'. U kunt ook de unicodeEncodingConformance en unicodeDecodingConformance kenmerken van het <webUtility> configuratie-element instellen om dit gedrag onafhankelijk van de doelversie van .NET Framework te beheren.

Naam Waarde
Omvang Rand
Versie 4.5
Typologie Hergericht adverteren

Betreffende API's

ClickOnce

Apps die zijn gepubliceerd met ClickOnce die gebruikmaken van een SHA-256-certificaat voor ondertekening van programmacode, kunnen mislukken in Windows 2003

Bijzonderheden

Het uitvoerbare bestand is ondertekend met SHA256. Voorheen was het ondertekend met SHA1, ongeacht of het certificaat voor ondertekening van programmacode SHA-1 of SHA-256 was. Dit is van toepassing op:

  • Alle toepassingen die zijn gebouwd met Visual Studio 2012 of hoger.
  • Toepassingen die zijn gebouwd met Visual Studio 2010 of eerder, op systemen waar .NET Framework 4.5 aanwezig is. Als het .NET Framework 4.5 of hoger aanwezig is, wordt het ClickOnce-manifest ook ondertekend met SHA-256 voor SHA-256-certificaten, ongeacht de .NET Framework-versie waarop het is gecompileerd.

Suggestie

De wijziging in het ondertekenen van het uitvoerbare ClickOnce-bestand is alleen van invloed op Windows Server 2003-systemen; ze vereisen dat KB-938397 worden geïnstalleerd. De wijziging in het ondertekenen van het manifest met SHA-256, zelfs wanneer een app is gericht op .NET Framework 4.0 of eerdere versies, introduceert een runtime-afhankelijkheid van .NET Framework 4.5 of een latere versie.

Naam Waarde
Omvang Rand
Versie 4.5
Typologie Hergericht adverteren

Kern

Foreach-iteratorvariabele wordt nu binnen de iteratie ingedeeld, dus het vastleggen van semantiek is anders (in C#5)

Bijzonderheden

Vanaf C# 5 (Visual Studio 2012) vallen iteratorvariabelen binnen het bereik van de iteratie. Dit kan problemen veroorzaken als de code eerder afhankelijk was van variabelen die niet in de closure van de foreach waren opgenomen. Het symptoom van deze wijziging is dat een iteratorvariabele die aan een gemachtigde wordt doorgegeven, wordt behandeld als de waarde die deze heeft op het moment dat de gemachtigde wordt gemaakt, in plaats van de waarde die op het moment dat de gemachtigde wordt aangeroepen.

Suggestie

In het ideale geval moet code worden bijgewerkt om het nieuwe compilergedrag te verwachten. Als de oude semantiek vereist is, kan de iteratorvariabele worden vervangen door een afzonderlijke variabele die expliciet buiten het bereik van de lus wordt geplaatst.

Naam Waarde
Omvang Majoor
Versie 4.5
Typologie Hergericht adverteren

De eigenschap IAsyncResult.CompletedSynchronously moet juist zijn om de resulterende taak te voltooien

Bijzonderheden

Wanneer u TaskFactory.FromAsync aanroept, moet de implementatie van de CompletedSynchronously eigenschap juist zijn om de resulterende taak te voltooien. Dat wil gezegd, de eigenschap moet waar retourneren als en alleen als de implementatie synchroon is voltooid. Voorheen is de eigenschap niet gecontroleerd.

Suggestie

Als System.IAsyncResult implementaties alleen juist 'true' retourneren voor de System.IAsyncResult.CompletedSynchronously eigenschap wanneer een taak synchroon is voltooid, wordt er geen onderbreking gezien. Gebruikers moeten de implementaties controleren System.IAsyncResult die ze bezitten (indien van toepassing) om ervoor te zorgen dat ze correct evalueren of een taak synchroon is voltooid of niet.

Naam Waarde
Omvang Rand
Versie 4.5
Typologie Hergericht adverteren

Betreffende API's

Lijst<T>. ForEach kan uitzondering genereren bij het wijzigen van lijstitem

Bijzonderheden

Vanaf .NET Framework 4.5 genereert een ForEach(Action<T>) enumerator een System.InvalidOperationException uitzondering als een element in de aanroepende verzameling wordt gewijzigd. Voorheen zou dit geen uitzondering genereren, maar zou dit tot racevoorwaarden kunnen leiden.

Suggestie

In het ideale geval moet code worden hersteld om lijsten niet te wijzigen terwijl de elementen worden opgesomd, omdat dat nooit een veilige bewerking is. Als u echter wilt terugkeren naar het vorige gedrag, kan een app zich richten op .NET Framework 4.0.

Naam Waarde
Omvang Rand
Versie 4.5
Typologie Hergericht adverteren

Betreffende API's

System.Uri-parsering voldoet aan RFC 3987

Bijzonderheden

URI-parsering is op verschillende manieren gewijzigd in .NET Framework 4.5. Houd er echter rekening mee dat deze wijzigingen alleen van invloed zijn op code die is gericht op .NET Framework 4.5. Als een binair bestand is gemaakt voor .NET Framework 4.0, zal het oude gedrag worden waargenomen. Wijzigingen in URI-parsering in .NET Framework 4.5 zijn onder andere:

  • URI-parsering voert normalisatie en tekencontrole uit volgens de nieuwste IRI-regels in RFC 3987.
  • Unicode-normalisatieformulier C wordt alleen uitgevoerd op het hostgedeelte van de URI.
  • Ongeldige "mailto:"-URI's veroorzaken nu een foutmelding.
  • Volgpunten aan het einde van een padsegment blijven nu behouden.
  • file:// URI's ontsnappen niet aan het ? teken.
  • Unicode-besturingstekens U+0080U+009F worden niet ondersteund.
  • Kommatekens , of %2c worden niet automatisch ongedaan gemaakt.

Suggestie

Als de oude .NET Framework 4.0 URI-ontleedsemantiek nodig is (wat vaak niet het geval is), kunnen ze worden gebruikt door .NET Framework 4.0 als doelwit te kiezen. Dit kan worden bereikt door gebruik te maken van een System.Runtime.Versioning.TargetFrameworkAttribute op de assembly of via de gebruikersinterface van het projectsysteem van Visual Studio op de pagina 'Projecteigenschappen'.

Naam Waarde
Omvang Majoor
Versie 4.5
Typologie Hergericht adverteren

Betreffende API's

System.Uri.IsWellFormedUriString-methode retourneert false voor relatieve URI's met een dubbele punt in het eerste segment

Bijzonderheden

Vanaf .NET Framework 4.5 worden relatieve URI's die een IsWellFormedUriString(String, UriKind) in hun eerste segment hebben, beschouwd als niet goed gevormd. Dit is een wijziging van System.Uri.IsWellFormedUriString(String, UriKind) gedrag in .NET Framework 4.0 die is aangebracht om te voldoen aan RFC3986.

Suggestie

Deze wijziging (zoals veel andere URI-wijzigingen) heeft alleen invloed op toepassingen die gericht zijn op .NET Framework 4.5 (of hoger). Als u het oude gedrag wilt blijven gebruiken, moet u de app richten op .NET Framework 4.0. U kunt ook URI's scannen voordat u aanroept System.Uri.IsWellFormedUriString(String, UriKind) naar : tekens die u mogelijk wilt verwijderen voor validatiedoeleinden, als het oude gedrag wenselijk is.

Naam Waarde
Omvang Minderjarige
Versie 4.5
Typologie Hergericht adverteren

Betreffende API's

Entity Framework

Entity Framework-versie moet overeenkomen met de .NET Framework-versie

Bijzonderheden

De EF-versie (Entity Framework) moet overeenkomen met de .NET Framework-versie. Entity Framework 5 wordt aanbevolen voor .NET Framework 4.5. Er zijn enkele bekende problemen met EF 4.x in een .NET Framework 4.5-project rond System.ComponentModel.DataAnnotations. In .NET Framework 4.5 zijn deze verplaatst naar een andere assembly, dus er zijn problemen met het bepalen welke aantekeningen moeten worden gebruikt.

Suggestie

Upgrade uitvoeren naar Entity Framework 5 voor .NET Framework 4.5

Naam Waarde
Omvang Majoor
Versie 4.5
Typologie Hergericht adverteren

Windows Forms

EncoderParameter-ctor is verouderd

Bijzonderheden

De EncoderParameter(Encoder, Int32, Int32, Int32, Int32) constructor is nu verouderd en zal build-waarschuwingen geven als deze wordt gebruikt.

Suggestie

Hoewel de EncoderParameter(Encoder, Int32, Int32, Int32, Int32)constructor blijft werken, moet de volgende constructor worden gebruikt om de verouderde buildwaarschuwing te voorkomen bij het opnieuw compileren van code met .NET Framework 4.5-hulpprogramma's: EncoderParameter(Encoder, Int32, EncoderParameterValueType, IntPtr)

Naam Waarde
Omvang Minderjarige
Versie 4.5
Typologie Hergericht adverteren

Betreffende API's

Windows Communication Foundation (WCF)

Binaire uitvoer schrijven met behulp van BodyWriter

Bijzonderheden

Als u afleidt van de klasse System.ServiceModel.Channels.BodyWriter en de implementatie van OnWriteBodyContents(XmlDictionaryWriter writer) gebruikt om binaire uitvoer te schrijven, moeten er mogelijk enkele wijzigingen worden doorgevoerd wanneer u uw doelplatform wijzigt naar .NET Framework 4.5. Controleer de schrijfstatus en indien het WriterState.Start is, genereer het Binary omsluitende XML-element, zoals weergegeven in het volgende codefragment.

protected override void OnWriteBodyContents(XmlDictionaryWriter writer)
{
    bool wroteStartElement = false;
    if (writer.WriteState == WriteState.Start)
    {
        writer.WriteStartElement("Binary", string.Empty);
        wroteStartElement = true;
    }
    writer.WriteBase64(buffer, offset, count);
    if (wroteStartElement)
    {
        writer.WriteEndElement();
    }
}

Bovendien, als u afgeleid bent van de klasse System.ServiceModel.Channels.StreamBodyWriter en de methode OnWriteBodyContents(XmlDictionaryWriter writer)hebt overschreven, zijn er mogelijk enkele wijzigingen vereist. Bij het targeten van .NET Framework 4.0 was het noodzakelijk om het Binary element expliciet te schrijven bij het overschrijven van deze methode. Dit is niet meer nodig wanneer u zich richt op .NET Framework 4.5 en dit zorgt ervoor dat de hoofdtekst niet wordt geschreven.

Windows Presentation Foundation (WPF)

WPF TextBox.Text kan uit sync zijn met databinding

Bijzonderheden

In sommige gevallen weerspiegelt de Text eigenschap een vorige waarde van de waarde van de gegevensgebonden eigenschap als de eigenschap wordt gewijzigd tijdens een gegevensbindingsschrijfbewerking.

Suggestie

Dit zou geen negatieve gevolgen moeten hebben. U kunt het vorige gedrag echter herstellen door de KeepTextBoxDisplaySynchronizedWithTextProperty eigenschap in te stellen op false.

Waarde
Omvang Rand
Versie 4.5
Typ Hergericht adverteren

Betreffende API's

Windows Workflow Foundation (WF)

Nieuwe (dubbelzinnige) Dispatcher-overbelastingen zouden kunnen resulteren in verschillend gedrag

Bijzonderheden

Met .NET Framework 4.5 worden nieuwe overbelastingen toegevoegd aan Dispatcher.Invoke die een parameter van het type Actionbevatten. Wanneer bestaande code opnieuw wordt gecompileerd, kunnen compilers aanroepen naar Dispatcher.Invoke-methoden met een Delegate-parameter oplossen als aanroepen naar Dispatcher.Invoke-methoden met een Action-parameter. Als een aanroep naar een Dispatcher.Invoke-overbelasting met een Delegate parameter wordt opgelost als een aanroep naar een Dispatcher.Invoke-overbelasting met een Action parameter, kunnen de volgende verschillen in gedrag optreden:

Suggestie

Om dubbelzinnigheid te voorkomen (en mogelijke verschillen in de wijze waarop uitzonderingen worden afgehandeld of processen worden geblokkeerd), kan code die Dispatcher.Invoke aanroept, een lege object[] als tweede parameter doorgeven om ervoor te zorgen dat de overbelasting van de .NET Framework 4.0-methode wordt aangeroepen.

Naam Waarde
Omvang Minderjarige
Versie 4.5
Typologie Hergericht adverteren

Betreffende API's

Sommige WorkFlow-API's voor slepen en neerzetten zijn verouderd

Bijzonderheden

Deze WorkFlow-API voor slepen en neerzetten is verouderd en veroorzaakt compilerwaarschuwingen als de app opnieuw wordt opgebouwd tegen 4.5.

Suggestie

Nieuwe System.Activities.Presentation.DragDropHelper API's die bewerkingen met meerdere objecten ondersteunen, moeten in plaats daarvan worden gebruikt. U kunt de buildwaarschuwingen ook onderdrukken of voorkomen door een oudere compiler te gebruiken. De API's worden nog steeds ondersteund.

Naam Waarde
Omvang Minderjarige
Versie 4.5
Typologie Hergericht adverteren

Betreffende API's

WorkFlow 3.0-typen zijn verouderd

Bijzonderheden

Windows Workflow Foundation (WWF) 3.0 API's (die van de System.Workflow-naamruimte) zijn nu verouderd.

Suggestie

In plaats daarvan moeten nieuwe WWF 4.0-API's (in System.Activities) worden gebruikt. Zie Hoe: De definitie van een actieve workflow-instantie bijwerken voor een voorbeeld van het gebruik van de nieuwe API's. Verdere richtlijnen zijn beschikbaar op WF3 Types Marked Obsolete in .NET 4.5. Aangezien de WWF 3.0-API's nog steeds worden ondersteund, kunnen ze ook worden gebruikt en kunt u de waarschuwing over de buildtijd vermijden door deze te onderdrukken of door een oudere compiler te gebruiken.

Naam Waarde
Omvang Majoor
Versie 4.5
Typologie Hergericht adverteren

WorkflowDesigner.Load verwijdert de symbooleigenschap niet

Bijzonderheden

Bij het richten van .NET Framework 4.5 in de werkstroomontwerper en het laden van een opnieuw gehoste 3.5-werkstroom met de Load() methode, wordt er een System.Xaml.XamlDuplicateMemberException gegenereerd tijdens het opslaan van de werkstroom.

Suggestie

Deze fout wordt alleen weergegeven bij het instellen van .NET Framework 4.5 in de werkstroomontwerper, zodat deze kan worden bewerkt door het WorkflowDesigner.Context.Services.GetService<DesignerConfigurationService>().TargetFrameworkName 4.0 .NET Framework in te stellen.

Het probleem kan ook worden vermeden door de methode te gebruiken om de Load(String) werkstroom te laden, in plaats van Load().

Naam Waarde
Omvang Majoor
Versie 4.5
Typologie Hergericht adverteren

Betreffende API's

XML, XSLT

Xml-schemavalidatie is strenger

Bijzonderheden

In .NET Framework 4.5 is xml-schemavalidatie strikter. Als u xsd:anyURI gebruikt om een URI zoals een mailto-protocol te valideren, mislukt de validatie als de URI spaties bevat. In eerdere versies van .NET Framework is de validatie geslaagd. De wijziging is alleen van invloed op toepassingen die gericht zijn op .NET Framework 4.5.

Suggestie

Als er meer .NET Framework 4.0-validatie nodig is, kan de validerende toepassing gebruikmaken van versie 4.0 van .NET Framework. Bij het opnieuw instellen van .NET Framework 4.5 moet codebeoordeling echter worden uitgevoerd om ervoor te zorgen dat ongeldige URI's (met spaties) niet worden verwacht als kenmerkwaarden met het gegevenstype anyURI.

Naam Waarde
Omvang Minderjarige
Versie 4.5
Typologie Hergericht adverteren

.NET Framework 4.5.1

ADO.NET

DbParameter.Precision en DbParameter.Scale zijn nu openbare virtuele leden

Bijzonderheden

Precision en Scale worden geïmplementeerd als openbare virtuele eigenschappen. Ze vervangen de bijbehorende expliciete interface-implementaties en IDbDataParameter.PrecisionIDbDataParameter.Scale.

Suggestie

Wanneer u een ADO.NET-databaseprovider opnieuw bouwt, moet het keyword 'override' worden toegepast op de eigenschappen Precisie en Schaal vanwege deze verschillen. Dit is alleen nodig bij het opnieuw bouwen van de onderdelen; bestaande binaire bestanden blijven werken.

Naam Waarde
Omvang Minderjarige
Versie 4.5.1
Typologie Hergericht adverteren

Betreffende API's

Kern

ObsoleteAttribute exporteert als zowel ObsoleteAttribute als DeprecatedAttribute in WinMD-scenario's

Bijzonderheden

Wanneer u een Windows-metagegevensbibliotheek (.winmd-bestand) maakt, wordt het System.ObsoleteAttribute kenmerk geëxporteerd als zowel System.ObsoleteAttribute als Windows.Foundation.DeprecatedAttribute.

Suggestie

Hercompilatie van bestaande broncode die gebruikmaakt van het System.ObsoleteAttribute kenmerk kan waarschuwingen genereren bij het gebruik van die code van C++/CX of JavaScript. Het is niet raadzaam om zowel System.ObsoleteAttributeWindows.Foundation.DeprecatedAttribute toe te passen op code in beheerde assembly's; dit kan leiden tot buildwaarschuwingen.

Naam Waarde
Omvang Rand
Versie 4.5.1
Typologie Hergericht adverteren

Entity Framework

Het bouwen van een Entity Framework edmx met Visual Studio 2013 kan mislukken met fout MSB4062 als u de EntityDeploySplit- of EntityClean-taken gebruikt

Bijzonderheden

MSBuild 12.0-hulpprogramma's (opgenomen in Visual Studio 2013) hebben MSBuild-bestandslocaties gewijzigd, waardoor oudere Entity Framework-doelenbestanden ongeldig zijn. Het resultaat is dat de taken EntityDeploySplit en EntityClean mislukken omdat ze Microsoft.Data.Entity.Build.Tasks.dll niet kunnen vinden. Houd er rekening mee dat deze onderbreking te maken heeft met een toolset (MSBuild/VS), niet vanwege een .NET Framework-wijziging. Dit gebeurt alleen wanneer u ontwikkelhulpprogramma's bijwerkt, niet wanneer u alleen het .NET Framework bijwerkt.

Suggestie

Entity Framework-doelenbestanden zijn vast voor gebruik met de nieuwe MSBuild-indeling vanaf .NET Framework 4.6. Als u een upgrade uitvoert naar die versie van het Framework, wordt dit probleem opgelost. U kunt deze tijdelijke oplossing ook gebruiken om de doelbestanden rechtstreeks te patchen.

Naam Waarde
Omvang Majoor
Versie 4.5.1
Typologie Hergericht adverteren

MSBuild

De ResolveAssemblyReference-taak waarschuwt nu voor afhankelijkheden met de verkeerde architectuur.

Bijzonderheden

De taak verzendt een waarschuwing, MSB3270, wat aangeeft dat een verwijzing of een van de bijbehorende afhankelijkheden niet overeenkomt met de architectuur van de app. Dit gebeurt bijvoorbeeld als een app die is gecompileerd met de AnyCPU optie een x86-verwijzing bevat. Een dergelijk scenario kan leiden tot een app-fout tijdens runtime (in dit geval als de app wordt geïmplementeerd als een x64-proces).

Suggestie

Er zijn twee impactgebieden:

  • Hercompilatie genereert waarschuwingen die niet zijn weergegeven toen de app werd gecompileerd onder een eerdere versie van MSBuild. Omdat de waarschuwing echter een mogelijke bron van runtime-fouten identificeert, moet deze worden onderzocht en aangepakt.
  • Als waarschuwingen worden behandeld als fouten, kan de app niet worden gecompileerd.
Naam Waarde
Omvang Minderjarige
Versie 4.5.1
Typologie Hergericht adverteren

Windows Presentation Foundation (WPF)

Gegevensbinding in twee richtingen met een eigenschap met een niet-openbare setter wordt niet ondersteund

Bijzonderheden

Een poging om gegevens te binden aan een eigenschap zonder een openbare setter, is nooit een ondersteund scenario geweest. Vanaf .NET Framework 4.5.1 genereert dit scenario een System.InvalidOperationException. Houd er rekening mee dat deze nieuwe uitzondering alleen wordt gegenereerd voor apps die specifiek gericht zijn op .NET Framework 4.5.1. Als een app is gericht op .NET Framework 4.5, wordt de aanroep toegestaan. Als de app niet gericht is op een bepaalde .NET Framework-versie, wordt de binding in één richting behandeld.

Suggestie

De app moet worden bijgewerkt om eenrichtingsbinding te gebruiken of de setter van de eigenschap openbaar beschikbaar te maken. Als u zich richt op .NET Framework 4.5, kan de app ook het oude gedrag vertonen.

Naam Waarde
Omvang Minderjarige
Versie 4.5.1
Typologie Hergericht adverteren

Betreffende API's

.NET Framework 4.5.2

Visual Basic .NET

VB.NET biedt geen ondersteuning meer voor gedeeltelijke naamruimtekwalificatie voor System.Windows-API's

Bijzonderheden

Vanaf .NET Framework 4.5.2 kunnen VB.NET projecten geen System.Windows-API's opgeven met gedeeltelijk gekwalificeerde naamruimten. Het verwijzen naar Windows.Forms.DialogResult zal bijvoorbeeld mislukken. In plaats daarvan moet code verwijzen naar de volledig gekwalificeerde naam (DialogResult) of de specifieke naamruimte importeren en gewoon naar System.Windows.Forms.DialogResultverwijzen.

Suggestie

Code moet worden bijgewerkt om te verwijzen naar System.Windows API's met eenvoudige namen (en het importeren van de relevante naamruimte) of met volledig gekwalificeerde namen.

Naam Waarde
Omvang Minderjarige
Versie 4.5.2
Typologie Hergericht adverteren

Windows Forms

DataObject.GetData haalt nu gegevens op als UTF-8

Bijzonderheden

Voor apps die zijn gericht op .NET Framework 4 of die worden uitgevoerd op .NET Framework 4.5.1 of eerdere versies, DataObject.GetData worden met HTML-indeling opgemaakte gegevens opgehaald als een ASCII-tekenreeks. Als gevolg hiervan worden niet-ASCII-tekens (tekens waarvan de ASCII-codes groter zijn dan 0x7F) vertegenwoordigd door twee willekeurige tekens.

Voor apps die zijn gericht op .NET Framework 4.5 of hoger en worden uitgevoerd op .NET Framework 4.5.2, haalt DataObject.GetData HTML-opgemaakte gegevens op als UTF-8. Dit vertegenwoordigt correct tekens die groter zijn dan 0x7F.

Suggestie

Als u een tijdelijke oplossing hebt geïmplementeerd voor het coderingsprobleem met tekenreeksen met HTML-indeling (bijvoorbeeld door de HTML-tekenreeks expliciet te coderen die is opgehaald van het Klembord door deze door te geven aan System.Text.UTF8Encoding.GetString(Byte[], Int32, Int32)) en u de app opnieuw wilt instellen van versie 4 tot en met 4.5, moet die tijdelijke oplossing worden verwijderd. Als het oude gedrag om een of andere reden nodig is, kan de app zich richten op .NET Framework 4.0 om dat gedrag op te halen.

Naam Waarde
Omvang Rand
Versie 4.5.2
Typologie Hergericht adverteren

Betreffende API's

Windows Workflow Foundation (WF)

WorkflowDesigner.Load verwijdert de symbooleigenschap niet

Bijzonderheden

Bij het richten van .NET Framework 4.5 in de werkstroomontwerper en het laden van een opnieuw gehoste 3.5-werkstroom met de Load() methode, wordt er een System.Xaml.XamlDuplicateMemberException gegenereerd tijdens het opslaan van de werkstroom.

Suggestie

Deze fout wordt alleen weergegeven bij het instellen van .NET Framework 4.5 in de werkstroomontwerper, zodat deze kan worden bewerkt door het WorkflowDesigner.Context.Services.GetService<DesignerConfigurationService>().TargetFrameworkName 4.0 .NET Framework in te stellen.

Het probleem kan ook worden vermeden door de methode te gebruiken om de Load(String) werkstroom te laden, in plaats van Load().

Naam Waarde
Omvang Majoor
Versie 4.5
Typologie Hergericht adverteren

Betreffende API's