【发布时间】:2011-11-30 08:43:55
【问题描述】:
我在 C#、.Net 2.0 中工作。
当我调试我的代码时,一切正常。但是,当我创建 exe 时,它不是。我添加了一个记录器。这是我的一段代码:
string[] dllFiles = System.IO.Directory.GetFiles(getAddinDllPath(), "Begin_*.dll");
foreach (string dllFile in dllFiles)
{
Logger.Info("ThisMethod numberX");
if (!dllFile.EndsWith("someString.dll", StringComparison.InvariantCultureIgnoreCase))
{
Assembly assembly = Assembly.LoadFile(dllFile);
foreach (Type type in assembly.GetTypes())
{
Logger.Info("ThisMethod numberY");
...............
getAddinDllPath() 方法返回:
addinDllPath = Path.Combine(Path.Combine(myDocuments, "Visual Studio 2005"), "Addins") + "\\";
当我调试我的程序时,文本“ThisMethod number Y”在日志文件中多次出现。
当我创建 exe 并运行它时,记录器看起来像这样:最后是 ThisMethod numberX。它永远不会涉及“ThisMethod numberY”。
这是为什么呢?
这是我的记录器:
类记录器 { 私有静态字符串路径 = @"C:\Users\John\Documents\Projects\MyLogger.txt";
public static string Path
{
get { return path; }
set { path = value; }
}
public static void Info(string msg)
{
StreamWriter sw = File.AppendText(path);
try
{
string logLine = System.String.Format(
"{0:G}: {1}: {2}", System.DateTime.Now, @"INFO", msg);
sw.WriteLine(logLine);
}
finally
{
sw.Close();
}
}
}
编辑: 如果 dllFiles 为空,则一切正常。但是如果文件在那里,那么问题就出现了。
编辑 2: 问题出在
Type type in assembly.GetTypes()
有人有想法吗?
【问题讨论】:
-
将调试信息添加到您的发布版本并尝试调试这个。
-
看起来你的 Logger 类没有刷新输出。
-
请使用try catch,以便捕获运行时异常。
-
@UweKeim 版本相同,代码相同。
-
@leppie 我的记录器类在我调试代码时工作正常,它在记录器中写入了几次“numberY”。当我使用 exe 时,它没有。