Кроме того, поскольку сборка имеет строгое имя (вы можете увидеть это по факту, что она имеет значение для PublicKeyToken
), вы можете установить сборку StructureMap в GAC , что сделает его доступным для любого приложения .NET, работающего в системе. Это, вероятно, решит вашу проблему.
Что касается развертывания со сборкой в GAC, это зависит от того, как вы планируете развертывать. Я предполагаю, что это приложение Winforms, поэтому я также предполагаю, что вы будете развертывать через проект установки. Если это так, тогда легко включить сборку, которая должна идти в GAC, в проект, и она установит ее там, если ее нет.
Однако, чтобы ответить на ваш вопрос, привязка сборки и загрузка несколько нюансированы, но общее правило состоит в том, что сборка загружается при первой загрузке содержащего ее типа. Тип загружается, как только блок кода, который ссылается, находится в активном фрейме стека.
Последнее предложение сводится к следующему: тип загружается, когда происходит одно из следующих действий:
- Загружен другой тип, который использует рассматриваемый тип в качестве экземпляра или статической переменной
Например, скажем, у меня есть типы A
, B
и C
.
public class A
{
}
public class C
{
}
public class B
{
private A myA;
private static C myC;
}
Когда загружен тип B
, он также загрузит A
, потому что он используется в качестве переменной экземпляра, а C
будет загружен, потому что он используется в качестве статической переменной.
- Функция, которая использует рассматриваемый тип в качестве локальной переменной, параметра или вызывает другую функцию, которая использует его в качестве параметра.