Сборка по определению является наименьшей единицей независимо обновляемого, распространяемого кода в .NET.Поэтому первый вопрос, который я хотел бы задать себе: «Хочу ли я когда-нибудь создать новую версию небезопасного кода и распространять ее независимо от моего приложения?»
Если ответ «да», то непременнопоместите этот код в его собственную сборку.
Если ответ отрицательный, рассмотрите другие факторы.Например, в «классической» безопасности .NET вы можете иметь разные сборки, работающие с разными уровнями доверия в одном и том же домене приложения.(В современном CLR система намного проще, есть просто полностью доверенный код, а все остальное выполняется на уровне доверия, предоставленного домену приложения.) Ваш код, который делает что-то небезопасное, должен быть полностью доверенным, но код, который просто вызываетоно может быть менее надежным, если небезопасный код устанавливает правильный набор разрешений.
Будете ли вы когда-нибудь в ситуации, когда ваш безопасный код будет частично доверенным?Если это так, то непременно поместите небезопасный код в его собственную сборку, а затем задокументируйте, что эта сборка должна быть полностью доверенной.
Если вы не находитесь в подобных ситуациях, я бы не стал склонятьсяпоместить мой небезопасный код в его собственную сборку.
Я бы, однако, был склонен написать приятную модель управляемого объекта поверх моего неуправляемого кода, а не просто показывать необработанные вызовы win32.Например, на днях мне нужно было вызвать некоторые из API-интерфейсов win32 для проверки строгих имен из C #, и я просто собрал небольшую библиотеку, которая хорошо их показала, абстрагируя все неприятные детали взаимодействия с частным внутренним пространством класса.