А я вот помнится делал такого типа танцы с бубном при модульном подключении dll на 2 фреймворке.
public static bool isHaveSpread
{
get
{
if (!First_isHaveSpread) // в первый раз спрашиваю ?
{
First_isHaveSpread = true;
if (!System.IO.File.Exists(System.Windows.Forms.Application.StartupPath + "\\" + NameDll))
{
Result_isHaveSpread = false;
}
else
{
Result_isHaveSpread = true;
}
}
return Result_isHaveSpread;
}
}
static object _spread = null;
private static object spread
{
get{
if (isHaveSpread && !OneProxod)
try
{
OneProxod = true;
if (_spread != null) Close();
_spread = new spread.LibSpread.Spread(Address,Port, User, System.Reflection.Assembly.GetExecutingAssembly().FullName);
}catch(Exception e){
System.Diagnostics.Debug.WriteLine("UserSpread.spread: " + e.Message);
//MVB.ImitarorMVB.IMITATOR_MVB = false;
}
//if(_spread!=null)
return _spread;
}
}
public static void Send<T>(T ob)
{
if (spread != null)
((spread.LibSpread.Spread)_spread).Send(ob);
}