私はVS2010/2012を使用していますが、アセンブリがどのように構築されているかを確認する方法(おそらくリフレクションを使用)があるかどうか疑問に思っていました。
デバッグで実行するときは、 を使用し#if DEBUG
てデバッグ情報をコンソールに書き出します。
しかし、最終的に大量のアセンブリができた場合、それらがどこでどのように構築されているかを確認する方法はありますか? バージョン番号を取得するのは簡単ですが、ビルド タイプを確認する方法を見つけることができませんでした。
私はVS2010/2012を使用していますが、アセンブリがどのように構築されているかを確認する方法(おそらくリフレクションを使用)があるかどうか疑問に思っていました。
デバッグで実行するときは、 を使用し#if DEBUG
てデバッグ情報をコンソールに書き出します。
しかし、最終的に大量のアセンブリができた場合、それらがどこでどのように構築されているかを確認する方法はありますか? バージョン番号を取得するのは簡単ですが、ビルド タイプを確認する方法を見つけることができませんでした。
3 つの方法があります。
private bool IsAssemblyDebugBuild(string filepath)
{
return IsAssemblyDebugBuild(Assembly.LoadFile(Path.GetFullPath(filepath)));
}
private bool IsAssemblyDebugBuild(Assembly assembly)
{
foreach (var attribute in assembly.GetCustomAttributes(false))
{
var debuggableAttribute = attribute as DebuggableAttribute;
if(debuggableAttribute != null)
{
return debuggableAttribute.IsJITTrackingEnabled;
}
}
return false;
}
または、assemblyinfo メタデータを使用します。
#if DEBUG
[assembly: AssemblyConfiguration("Debug")]
#else
[assembly: AssemblyConfiguration("Release")]
#endif
または#if DEBUG
コード内で定数を使用する
#if DEBUG
public const bool IsDebug = true;
#else
public const bool IsDebug = false;
#endif
私は2番目の方法を好むので、コードとWindowsエクスプローラーの両方で読むことができます
それらがコンパイルされると、メタデータを自分で配置しない限り、コンパイルできません。
たとえば、AssemblyConfigurationAttribute
または .NET 4.5 のいずれかを使用できます。AssemblyMetadataAttribute
#if DEBUG
[assembly: AssemblyConfiguration("Debug")]
#else
[assembly: AssemblyConfiguration("Release")]
#endif
また
#if DEBUG
[assembly: AssemblyMetadata("DefinedVariable", "DEBUG")]
#endif