Solution Configuration prüfen?

08/01/2008 - 13:52 von Christian Havel | Report spam
Hi,

wie kann ich mittels C# (1.1) prüfen, welche Solution Configuration (Debug,
Release oder meine eigene) aktiviert ist?

Viele Grüße Christian
 

Lesen sie die antworten

#1 Frank Dzaebel
08/01/2008 - 16:17 | Warnen spam
Hallo Christian,

wie kann ich mittels C# (1.1) prüfen, welche Solution
Configuration (Debug, Release oder meine eigene) aktiviert ist?



wenn gemeint ist, dass die App standalone im Release
irgendwo auf einem Kundenrechner làuft, dann
ist das normal nicht gespeichert, mit welcher
Konfiguration Du diese erstellt hast, wenn Du diesen
Umstand nicht explizit als Info hineinkompilierst.
Für ganz simple Fàlle könnte ja ggf. folgendes
noch ausreichend sein:

bool IsDebug()
{
bool isDebug = false;
#if DEBUG
isDebug = true;
#endif
return isDebug;
}


Du kannst aber den wirklichen Konfigurationsnamen auch auslesen,
wenn Du z.B. dieses im PreBuildStep z.B. über ein C#
Programm abfragst, und dabei in die AssemblyInfo.cs (Dateien der
einzelnen Sub-Projekte) z.B. hier (oder ein anders)
hineinschreibst:

[assembly: AssemblyConfiguration("")]

So kann man es dann z.B. auslesen:

object[] attr = Assembly.GetEntryAssembly().
GetCustomAttributes(typeof(AssemblyConfigurationAttribute), false);
if (attr.Length > 0)
{
AssemblyConfigurationAttribute aca =
(AssemblyConfigurationAttribute)attr[0];
MessageBox.Show(aca.Configuration);
}

Erhalten kannst Du den Konfigurationsnamen im
Normalfall z.B. über:

string path = this.GetType().Assembly.Location;
DTE dte = Marshal.GetActiveObject("VisualStudio.DTE") as EnvDTE.DTE;
if (dte == null) return; // nur Visual Studio
MessageBox.Show("Aktive Konfiguration:" +
dte.Solution.SolutionBuild.ActiveConfiguration.Name);

AssemblyInfo.cs im einfachsten Fall:

Array prs = dte.Solution.SolutionBuild.StartupProjects as Array;
Project project = dte.Solution.Projects.Item(prs.GetValue(0));
int itemAnz = project.ProjectItems.Count;
ProjectItem props = project.ProjectItems.Item("Properties");
ProjectItem asmInfo = props.ProjectItems.Item("AssemblyInfo.cs");
string asmName = asmInfo.Document.FullName;


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen