我想接受这个:
try
{
Assembly assembly = Assembly.Load("This.Is.My.Assembly.Name");
}
catch (Exception)
{
}
做类似的事情,但从来没有让它抛出异常。也许做一些返回null而不是异常的东西,在尝试加载它之前检查程序集是否存在。什么是实现这一目标的最优雅方式?
答案 0 :(得分:0)
您可以检查执行程序集是否具有对程序集的引用。这样的事情。
if (Assembly.GetExecutingAssembly().GetReferencedAssemblies()
.FirstOrDefault(c => c.FullName == "This.Is.My.Assembly.Name") == null)
{
var assembly = Assembly.Load("This.Is.My.Assembly.Name");
}
答案 1 :(得分:0)
您可以使用Assembly.ReflectionOnlyLoad尝试获取程序集。见http://msdn.microsoft.com/de-de/library/0et80c7k(v=vs.110).aspx。如果找不到程序集并引发异常,但如果找到它,则程序集不会加载到您的AppDomain。您可以将其视为" TryLoadAssembly"。 ;)
答案 2 :(得分:0)
您可以像这样检查程序集:
bool IsAssemblyExists(string assemblyName)
{
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
{
if (assembly.FullName.StartsWith(assemblyName))
return true;
}
return false;
}