2014-02-12 1 views
0

Как уменьшить размер (МБ) сборки рабочего процесса?Уменьшить размер сборки рабочего процесса

Сборка с 4 пользовательскими рабочими процессами составляет 2,5 МБ с классом, который crmcsvutil.exe генерирует из CRM; эта же сборка составляет 18 КБ, когда сгенерированный класс не включен в проект!

Регистрация плагинов часто терпит неудачу после тайминга, поэтому я бы очень хотел уменьшить размер сборки.

Я попытался помещать сгенерированный класс в отдельную сборку и ссылаться на нее, и поместить сборку в GAC, но получить сообщение об ошибке.

Это когда сборка регистрируется в песочнице (который я действительно предпочитаю):

Assembly 'Tinkerbell.Workflows, Version=2.0.3.4, Culture=neutral, PublicKeyToken=692195edcbe6b163' is partially trusted, which causes the CLR to make it entirely security transparent regardless of any transparency annotations in the assembly itself. In order to access security critical code, this assembly must be fully trusted.' 

Это когда сборка регистрируется вне песочницы:

'Object of type 'Microsoft.Xrm.Sdk.Entity' cannot be converted to type 'BusinessUnit'.' 

Каковы варианты здесь?
Я не желаю сдавать ранние классы.

ответ

2

Вы можете создавать только ранние связанные объекты, которые вам нужны, с помощью этой утилиты Filtering generated entities with CrmSvcUtil.

Вам просто нужно указать XML с нужными лицами:

<filter> 
    <entities> 
    <entity>systemuser</entity> 
    <entity>team</entity> 
    <entity>role</entity> 
    <entity>businessunit</entity> 
    </entities> 
</filter> 
1

Вы можете вручную отредактировать файл класса, созданный CRM, чтобы вырезать все, кроме объектов, которые вам нужны, но это будет немного больно и нужно будет переделать, если вы когда-либо обновляли файл класса CRM.

Есть ли причина, по которой вы не хотите отказываться от ранних занятий? Поздняя граница имеет некоторые преимущества и немного быстрее. Если вы хотите сохранить раннюю связь, вы можете написать свои собственные классы, а затем написать функции отображения, которые переводится из ваших классов в объекты.

+0

Я не хочу, чтобы отказаться от Linq к CRM. Могу ли я использовать Linq без генерируемых классов? – Bvrce

+1

Не совсем, вам придется использовать некоторые другие методы получения данных CRM, как только у вас есть эти данные, вы все равно можете использовать LINQ to Objects. Лично я использую QueryExpression, если мне не нужно делать агрегаты, тогда я использую FetchXML. Затем я пишу свои собственные классы, чтобы содержать мою бизнес-логику и, наконец, отображать функции для перевода между ними. Если вы хотите придерживаться LINQ to CRM, вам придется обрезать созданный CRM-файл. –

+0

Мне нужна промышленная газонокосилка, чтобы обрезать этот файл. Благодарим вас за понимание того, как вы запрашиваете CRM. Я знаю, что есть преимущества производительности для FetchXML и QueryExpression, но читаемость и простота использования Linq для CRM велика. – Bvrce