Одно общее решение будет фильтровать сборки по имени, если все ваши сборках имеют общий префикс (если у вас есть более или менее уникальный префикс).
var foo = AppDomain.CurrentDomain.GetAssemblies()
.Where(a=>a.FullName.StartsWith("MyProject."));
Если вы заинтересованы только в некоторых конкретных типов, рассмотреть возможность использования attributes для классов, или даже добавить один на уровне сборки.
Пример:
Создать атрибут:
[AttributeUsage(AttributeTargets.Assembly)]
public class MyAssemblyAttribute : Attribute { }
добавить следующее к AssemblyInfo.cs:
[assembly: MyAssemblyAttribute()]
и отфильтровать узлы, которые вы ищете по адресу:
var foo = AppDomain.CurrentDomain
.GetAssemblies()
.Where(a => a.GetCustomAttributes(typeof(MyAssemblyAttribute), false).Any());
Также вы найдете at this question. В one answer предлагается проверить полное имя каждого узла, но это довольно утомительно, например:
//add more .Net BCL names as necessary
var systemNames = new HashSet<string>
{
"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
...
};
var isSystemType = systemNames.Contains(objToTest.GetType().Assembly.FullName);
Это всегда легче пометить узлы (по имени или атрибута), чем пытаться определить, какие из них являются часть .Net framework.
Извините, кажется, вы забыли задать вопрос. – leppie
Я хочу исключить сборки, предоставленные .net - мой пример взял все сборки - если вам нужен вопрос для этого: как я могу это достичь? – Jan