У меня есть CLR SQL dll, я хочу развернуться, но нашел, что можно встроить байт stream/varbinary_literal/varbinary_expression/assembly биты в текстовый файл для обхождения грязной стычки упаковки DLL и проверки, что это доступно для команды CREATE ASSEMBLY.
Но то, что я должен все же найти, - то, как получить тот байт stream/varbinary_literal/varbinary_expression/assembly значение битов. Я не нашел последовательной терминологии, и что я продолжаю находить в использовании Load()
.
Это просто шестнадцатеричное представление библиотеки DLL. Этот бит должен помочь:
static string GetHexString(string assemblyPath)
{
if (!Path.IsPathRooted(assemblyPath))
assemblyPath = Path.Combine(Environment.CurrentDirectory, assemblyPath);
StringBuilder builder = new StringBuilder();
builder.Append("0x");
using (FileStream stream = new FileStream(assemblyPath,
FileMode.Open, FileAccess.Read, FileShare.Read))
{
int currentByte = stream.ReadByte();
while (currentByte > -1)
{
builder.Append(currentByte.ToString("X2", CultureInfo.InvariantCulture));
currentByte = stream.ReadByte();
}
}
return builder.ToString();
}
Вы должны использовать результирующую строку следующим образом:
string hexString = GetHexString(assemblyPath);
string sql = "CREATE ASSEMBLY [" + assemblyName + "] FROM " + hexString +
" WITH PERMISSION_SET = " + somePermissionSet;