Question

Je commence le déploiement de mon application web et je dois garantir que toutes les assemblées qui vont être déployées ont été construits en utilisant la configuration de sortie. Notre système a été développé en C # /. Net 3.5.

Y at-il moyen d'y parvenir?

Était-ce utile?

La solution

Vérifier cette . L'idée est que vous obtenez la liste des attributs à l'aide assemblage Assembly.GetCustomAttributes() et recherche de DebuggableAttribute puis trouver si un tel attribut a IsJITTrackingEnabled ensemble de la propriété.

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

Autres conseils

Si vous avez réflecteur installé, vous pouvez également cliquer sur l'ensemble et recherchez l'attribut débogable ([assembly: débogable ()]). Dans le volet désassembleur

En supposant que Debug et Release configuration, symbole DEBUG est définie par défaut avec la configuration de débogage, de sorte que le code ci-dessous dans AssemblyInfo.cs (sous le dossier Propriétés).

#if DEBUG
[assembly: AssemblyTitle("Debug")]
#else
[assembly: AssemblyTitle("Release")]
#endif

J'utilise AssemblyTitle sur AssemblyDescription comme il apparaîtra sur mes propriétés de l'explorateur de fichiers Windows 7:

Pour ceux qui aiment la réponse de David et StevieG, voici un script LINQPad écrit en C #. Pour utiliser le script, vous devez télécharger LINQPad 5 et assurez-vous du programme C # est sélectionné comme indiqué la capture d'écran ci-dessous.

Il suffit de remplacer DLL_FOLDER_PATH pour pointer vers le dossier contenant les DLL à inspecter.

// TODO - Specify your folder containing DLLs to inspect
static string DLL_FOLDER_PATH = @"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0";
void Main()
{
    (from dllPath in Directory.GetFiles(DLL_FOLDER_PATH, "*.dll")
    let assembly = dllPath.SafeLoad()
    let build = assembly == null ? "Error" : (dllPath.SafeLoad().IsAssemblyDebugBuild() ? "Debug" : "Release")
    select new {
        Assembly_Path = dllPath,
        Build = build,
    }).Dump();
}
static class Extensions {
    public static bool IsAssemblyDebugBuild(this Assembly assembly)
    {
        return assembly.GetCustomAttributes(false).OfType<DebuggableAttribute>().Select(da => da.IsJITTrackingEnabled).FirstOrDefault();
    }
    public static Assembly SafeLoad(this string path){
        try{
            return Assembly.LoadFrom(path);
        }
        catch {
            return null;
        }
    }
}

LINQPad 5 peut être téléchargé .

Ne pas déployer à la production via Visual Studio. Regardez dans d'intégration continue et scénarisé builds (comme avec NAnt , ou peut-être quelque chose de plus lisible comme FAKE ).

La touche F5 est pas un processus de construction

Pour ses détracteurs qui croient que cela ne répond pas à la question, l'OP a écrit:

  

... Je dois garantir que tous les ensembles qui vont être   Déployé ont été construits en utilisant la configuration de sortie.

garantie , utilisez un serveur de build tels que TeamCity et peut-être un outil de gestion des versions comme Octopus Déployer . Verrouillez vos systèmes de production afin que les développeurs doivent passer par le processus de construction officiel.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top