6

私はVS2010/2012を使用していますが、アセンブリがどのように構築されているかを確認する方法(おそらくリフレクションを使用)があるかどうか疑問に思っていました。

デバッグで実行するときは、 を使用し#if DEBUGてデバッグ情報をコンソールに書き出します。

しかし、最終的に大量のアセンブリができた場合、それらがどこでどのように構築されているかを確認する方法はありますか? バージョン番号を取得するのは簡単ですが、ビルド タイプを確認する方法を見つけることができませんでした。

4

2 に答える 2

3

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エクスプローラーの両方で読むことができます

于 2013-03-04T10:48:13.860 に答える
3

それらがコンパイルされると、メタデータを自分で配置しない限り、コンパイルできません。

たとえば、AssemblyConfigurationAttributeまたは .NET 4.5 のいずれかを使用できます。AssemblyMetadataAttribute

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

また

#if DEBUG
[assembly: AssemblyMetadata("DefinedVariable", "DEBUG")]
#endif
于 2013-03-04T10:39:59.757 に答える