В Dotnet2.0 и более поздних версиях программа отказывается запускаться, если одна из ее зависимых (статических ссылок) DLL отсутствует.
С Dotnet1.1 и 1. отсутствуют определенные dll.
Возможно ли это без изменения исходного кода (выполняется путем применения некоторых атрибутов)?
Я не хочу вручную загружать сборки с помощью программного кода или использовать IOC-Framworks.
Обновление: с " статические ссылочные библиотеки DLL "я имею в виду противоположность динамической загрузки библиотеки DLL в моем собственном программном коде с использованием отражения и Assembly.Loadxxxx ().
Обновление 2010-12-25 Я думал о сложном. Спасибо за простое решение от @erinus:
мне просто нужно поставить try catch, и это сработало:
using System;
using System.IO;
using log4net; // log4net.dll might be missing
namespace ConsoleAppWithMissingDll
{
class Program
{
static bool dllIsInstalled = true;
static void Main(string[] args)
{
Console.WriteLine("Hello missing dll");
try
{
OutputViaLog4Net("hello log4net");
}
catch (FileNotFoundException)
{
dllIsInstalled = false;
Console.WriteLine("Log4net-dll not found");
}
Console.WriteLine("Program continued");
#if DEBUG
Console.WriteLine("Press any key to exit");
Console.ReadKey();
#endif
}
private static void OutputViaLog4Net(string message)
{
ILog logger = LogManager.GetLogger("MyLogger");
logger.Debug(message);
}
}
}