2015-02-17 2 views
0

Я пытаюсь развернуть пользовательскую сборку .NET в моей базе данных SSAS. При этом я столкнулся с Clr Assembly must have main file specified error, и изменение целевой структуры, как указано в отмеченном ответе, не решило ее.Отсутствует <Files> тег в xmla для развертывания сборки

Я также проверил, была ли блокировка dll заданной here, но поскольку она была скомпилирована той же системой, над которой я работаю, ее не нужно разблокировать, поэтому опция не появляется даже в свойствах файла сборки.

Я попробовал развернуть как с SQL Server Data Tools 2012, так и с SQL Server Management Studio 2012, я получаю ту же ошибку. Я проверил скрипт XMLA, который SSMS использовал для его развертывания, и, как оказалось, отсутствует тег <Files> (который обычно имеет двоичные данные файла сборки). Это может означать, что SSMS и VS не могут прочитать двоичное содержимое сборки.

Хотя DLL не в сети, но на локальной машине, я пробовал обходное решение here, но это не сработало, поскольку я не могу развернуть dll, в первую очередь, чтобы я мог ALTER позже.

Есть ли что-то, что я упускаю?

ответ

1

Мне удалось найти обходной путь для этого. Я использовал следующий код C# для получения двоичных данных для моего файла сборки.

Convert.ToBase64String(File.ReadAllBytes(@"Path\To\Assembly.dll")) 

Затем я добавил <Files> тег вручную сценария XMLA вместе с бинарными данными, что вышеуказанная функция возвращает. Теперь сборка успешно развертывается после выполнения модифицированного сценария XMLA.

Вот как выглядит мой тег <Files>.

<Files> 
    <File> 
     <Name>Assembly.dll</Name> 
     <Type>Main</Type> 
     <Data> 
      <Block> 
       <!-- Binary Data Obtained After Base64 Encoding --> 
      </Block> 
     </Data> 
    </File> 
</Files> 
Смежные вопросы