Я работаю в 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» появляется несколько раз в файле журнала.
Когда я создаю исполняемый файл и запускаю его, регистратор выглядит так: ThisMethod numberX в конце. Это никогда не приходит к «ThisMethod numberY».
Почему это?
Вот мой регистратор:
Класс Logger
{
путь к частной статической строке = @ "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();
}
}
}
Edit:
если dllFiles пуст, то все в порядке. Но если файлы есть, то проблема появляется.
Редактировать 2:
Проблема в
Type type in assembly.GetTypes()
У кого-нибудь есть идея?