web-dev-qa-db-fra.com

Comment vérifier si un assemblage a été construit à l'aide de la configuration de débogage ou de libération?

Je commence le déploiement de mon application Web et je dois garantir que tous les assemblages à déployer ont été construits à l'aide de la configuration de libération. Notre système a été développé à l'aide de C # /. NET 3.5.

Y'a-t-il une quelconque façon de réussir cela?

44
born to hula

Chèque this . L'idée est que vous obtenez la liste des attributs d'assemblage à l'aide de Assembly.GetCustomAttributes() et recherchez DebuggableAttribute, puis trouvez si cet attribut a IsJITTrackingEnabled.

    public bool IsAssemblyDebugBuild(Assembly assembly)
    {
        return Assembly.GetCustomAttributes(false).OfType<DebuggableAttribute>().Any(da => da.IsJITTrackingEnabled);
    }
41
David

Si c'est votre montage, je crois à l'aide de l'attribut AssemblyConfiguration L'attribut est la meilleure approche. Il est documenté comme "Spécifie la configuration de construction, telle que la vente au détail ou le débogage, pour un assemblage".

En fonction de vos configurations de construction, vous pourriez avoir du code comme celui-ci:

#if DEBUG
[Assembly: AssemblyConfiguration("Debug")]
#else
[Assembly: AssemblyConfiguration("Release")]
#endif

Ensuite, vérifiez l'attribut de montage:

public static bool IsAssemblyConfiguration(Assembly assembly, string configuration)
{
    var attributes = Assembly.GetCustomAttributes(typeof(AssemblyConfigurationAttribute), false);
    if (attributes.Length == 1)
    {
        var assemblyConfiguration = attributes[0] as AssemblyConfigurationAttribute;
        if (assemblyConfiguration != null)
        {
            return assemblyConfiguration.Configuration.Equals(configuration, StringComparison.InvariantCultureIgnoreCase);
        }
    }
    return true;
}

(Je sais que R. Schreurs commentaire à Rubens Farias dit la même chose, mais j'ai trouvé ces informations quelque part ailleurs avant de voir le commentaire, je pense que cela nécessite une entrée plus importante comme une réponse complète au lieu d'un commentaire)

7

Si vous avez installé le réflecteur, vous pouvez également cliquer sur l'assemblage et rechercher l'attribut de débisibilité ([Assemblée: Débistissable ()]) dans le volet de désassembleur.

2
xr280xr