L'activation de l'héritage depuis app.config n'a pas fonctionné pour moi. Pour des raisons inconnues, mon application n'activait pas la politique d'exécution de la V2. J'ai trouvé un moyen de contourner le problème aquí .
Activer l'héritage à partir d'app.config est une approche recommandée mais dans certains cas, cela ne fonctionne pas comme prévu. Utilisez le code suivant dans votre application principale pour forcer la politique Legacy V2 :
public static class RuntimePolicyHelper
{
public static bool LegacyV2RuntimeEnabledSuccessfully { get; private set; }
static RuntimePolicyHelper()
{
ICLRRuntimeInfo clrRuntimeInfo =
(ICLRRuntimeInfo)RuntimeEnvironment.GetRuntimeInterfaceAsObject(
Guid.Empty,
typeof(ICLRRuntimeInfo).GUID);
try
{
clrRuntimeInfo.BindAsLegacyV2Runtime();
LegacyV2RuntimeEnabledSuccessfully = true;
}
catch (COMException)
{
// This occurs with an HRESULT meaning
// "A different runtime was already bound to the legacy CLR version 2 activation policy."
LegacyV2RuntimeEnabledSuccessfully = false;
}
}
[ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("BD39D1D2-BA2F-486A-89B0-B4B0CB466891")]
private interface ICLRRuntimeInfo
{
void xGetVersionString();
void xGetRuntimeDirectory();
void xIsLoaded();
void xIsLoadable();
void xLoadErrorString();
void xLoadLibrary();
void xGetProcAddress();
void xGetInterface();
void xSetDefaultStartupFlags();
void xGetDefaultStartupFlags();
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
void BindAsLegacyV2Runtime();
}
}
2 votes
IMPORTANT : Si l'erreur se produit avec la colonne d'erreur "Fichier" comme
SGEN
alors le correctif doit être dans un fichiersgen.exe.config
à côté desgen.exe
. Par exemple, pour VS 2015, créezC:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\sgen.exe.config
. Source : SGEN Assemblage en mode mixte Contenu minimal du fichier :<configuration><startup useLegacyV2RuntimeActivationPolicy="true"/></configuration>
1 votes
Sachez que vous pouvez non seulement avoir " C:\Program Fichiers (x86) \Microsoft SDKs \Windows\v10.0A\bin\NETFX 4.6 Tools\", mais sous ce répertoire, un répertoire 'x64' qui contient également un sgen.exe, et peut-être plusieurs autres copies/versions de sgen, toutes dans des chemins différents, selon le nombre et les versions de VS que vous avez installés.
0 votes
@ToolmakerSteve Veuillez poster votre commentaire en tant que réponse afin que je puisse l'upvoter ; aucune des autres réponses ne m'a aidé.
0 votes
@Malcolm - OK, publié en tant que réponse