Ваше базовое предположение о том, что сборка будет выполняться только как полностью доверенный исполняемый файл, неверно.Нет ничего, что могло бы помешать кому-то, кто может заполучить вашу сборку, использовать ее в качестве сборки библиотеки, на которую ссылаются, в части вредоносного ПО.Если вы изменили политику CAS компьютера, чтобы обеспечить полное доверие к вашей сборке независимо от того, как она развернута, то вредоносная программа потенциально сможет использовать вашу сборку для выполнения операций, для которых в противном случае она не имела бы соответствующих разрешений.
Результатом этого является то, что вы действительно должны сделать что-то, чтобы предотвратить удовлетворение требований ссылки от имени вызывающего кода, независимо от предполагаемого сценария развертывания.Учитывая, что вы сами нацелены на сценарий полного доверия, на самом деле это будет довольно легко. Однако точный подход во многом зависит от того, на какую версию .NET Framework вы нацеливаетесь, поэтому не могли бы вы опубликовать эту информацию?
Для .NET 2.0 - самый простой подход к адресациипроблема будет заключаться в применении SecurityTransparentAttribute или SecurityCriticalAttribute к вашей сборке.Оба атрибута приведут к тому, что код в вашей сборке станет прозрачным для безопасности по умолчанию, что означает, что он не может выполнять такие вещи, как удовлетворение требований ссылки от имени своих вызывающих.Если есть части вашего кода, которые должны делать вещи, которые не разрешены для прозрачного для безопасности кода, вы должны использовать SecurityCriticalAttribute вместо SecurityTransparentAttribute на уровне сборки, поскольку это позволит вам явно продвигать типы и / или элементы в security-критичность, если им это нужно.(Более подробно см. http://blogs.msdn.com/b/shawnfa/archive/2005/08/31/when-the-opposite-of-transparent-isn-t-opaque.aspx.)