我正在开发一个小型的c#控制台应用程序,它将检查我的.net DLL并从编译的dll中查找特定于环境的信息。
基本上,我想查看c#Web发布的项目并显示包含生产特定信息的开发人员忘记更新的任何文件......
问题:我遇到的是当开发人员在Dev之间切换到测试和测试prod时。他们忘记在C#或web.config文件中切换环境值。
有没有办法可以打开单个DLL并使用C#代码和免费反编译器将DLL内容解压缩为字符串?
答案 0 :(得分:0)
试试这个:
using System;
using System.Linq;
using System.Reflection;
#if DEBUG
[assembly:AssemblyConfiguration("debug")]
#else
[assembly:AssemblyConfiguration("release")]
#endif
namespace ConsoleApp1
{
internal class Program
{
private static void Main()
{
// this should be the filename of your DLL
var filename = typeof(Program).Assembly.Location;
var assembly = Assembly.LoadFile(filename);
var data = assembly.CustomAttributes.FirstOrDefault(a => a.AttributeType == typeof(AssemblyConfigurationAttribute));
if (data != null)
{
// this will be the argument to AssemblyConfigurationAttribute
var arg = data.ConstructorArguments.First().Value.ToString();
Console.WriteLine(arg);
}
}
}
}