برنامه نویسی

راهنمای عیب یابی برای توسعه دهندگان با چالش هایی با CRMSVCutil و XRMToolbox Generator Early Bound

تولید کلاسهای محدود اولیه اغلب یکی از اولین مراحلی است که توسعه دهندگان هنگام کار بر روی سفارشی سازی Dynamics 365 CE در C#انجام می دهند. با این حال ، این روند همیشه ساده نیست. آیا شما استفاده می کنید crmsvcutil.exe یا ژنراتور محدود XRMToolbox، ممکن است شما به موضوعاتی اعم از منابع مفقود شده تا نامگذاری برخورد و ایجاد خرابی بپردازید.

این لیست لیست ها مسائل مشترک و رفع این می تواند ساعت ها از خراش سر صرفه جویی کند.


1. crmsvcutil: بار مونتاژ یا خطاهای نام قوی

صادر کردن:

هنگام استفاده از یک مونتاژ ادغام شده (مانند Ilmerge) یا ثبت یک مونتاژ زودهنگام به عنوان افزونه ، دریافت می کنید:

The assembly is not strongly named.

ثابت کردن:

  • استفاده کردن sn.exe برای تولید یک کلید نام قوی (sn -k key.snk) و مونتاژ خود را وارد کنید AssemblyInfo.cs یا تنظیمات پروژه
  • ilmerge با /keyfile:key.snk برای حفظ نام قوی.
  • انجام دادن نه کلاسهای زودهنگام را مستقیماً به عنوان افزونه ثبت کنید. در عوض ، مرجع آنها را در پروژه افزونه واقعی شما.

2. تعاریف enum optionset را از دست داد

صادر کردن:

ممکن است خطاهایی مانند:

The type or namespace name 'Account.AccountCategoryCode' could not be found.

ثابت کردن:

  • این امر به طور معمول در صورت عدم تولید یا ارجاع به درستی اتفاق می افتد.
  • اطمینان حاصل کنید که در حال بررسی هستید “تولید enums Optionset” تنظیم در ابزار xrmtoolbox یا استفاده از صحیح /generateOptionSetEnums:true پارامتر با crmsvcutil.
  • در xrmtoolbox ، به ژنراتور محدود اولیه> تنظیمات پیشرفته و انتخاب کنید برای همه مجموعه های گزینه یک فایل ایجاد کنیدبشر

3. کلاس ها به چندین پرونده تقسیم می شوند

صادر کردن:

شما در نهایت با صدها نفر .cs پرونده ها – یکی در هر موجودیت – که پروژه شما را به هم می زند.

ثابت کردن:

  • در جعبه xrmtoolbox، زیر گزینه های پرونده، انتخاب کنید “خروجی پرونده تک” یا “یک پرونده در هر نوع در یک پوشه” برای سازماندهی بهتر
  • از طرف دیگر ، پس از نسل ، به صورت دستی یا از طریق ساخت اسکریپت ها ادغام می شوند.

4. خطاهای Intellisense پس از افزودن پرونده تولید شده

صادر کردن:

ویژوال استودیو خطاهایی مانند:

EntityOptionSetEnum does not contain a definition for 'GetMultiEnum'

ثابت کردن:

  • این معمولاً وقتی اتفاق می افتد پرونده های تولید شده به درستی گردآوری نمی شوند یا مجموعه گزینه ها و کلاس های موجودیت از همگام سازی خارج هستندبشر
  • با استفاده از همان عکس فادری ابرداده ، هر دو فایل های موجود و گزینه را با هم بازسازی کنید.
  • در صورت استفاده از کلاسهای جزئی یا گسترش نهادهای پایه ، اطمینان حاصل کنید که نام های نام ها تراز شده اند.

5. کلاس افزونه پس از استقرار یافت نشد

صادر کردن:

افزونه هایی که به کلاسهای محدود اولیه مراجعه می کنند ، پس از استقرار ، حتی اگر در محلی کار کنند ، شکست می خورند.

ثابت کردن:

  • مطمئن شوید DLL اولیه محدود با مونتاژ افزونه شما مستقر شده استبشر
  • در صورت استفاده بدیهی کردن، تأیید کنید که همه وابستگی ها به درستی ادغام و امضا شده اند.
  • در خطوط لوله Azure DevOps ، از وظایف استفاده کنید تا DLL ادغام شده را شامل شود .cs پرونده ها در حین ساخت.

6. با استفاده از دستورالعمل ها از دست رفته است

صادر کردن:

خطاهای تلفیقی مانند:

'Account_AccountRatingCode' could not be found

ثابت کردن:

  • مناسب را اضافه کنید using دستورالعمل به صورت دستی (به عنوان مثال ، using MyNamespace.Entities;)
  • یا فایل تولید شده را با فضای نام صحیح قبل از تدوین بپیچید.

نکات پاداش

  • برای سهولت در استفاده و سفارشی سازی مبتنی بر GUI از افزونه اولیه ژنراتور محدود استفاده کنید.
  • پشتیبان گیری تمیز از کلاسهای تولید شده را تحت کنترل نسخه نگه دارید. در صورت تغییر طرحواره DataVerse ، بازسازی کلاس های محدود اولیه به جلوگیری از شگفتی کمک می کند.
  • این پرونده های تولید شده را به a اضافه کنید پروژه جداگانه در راه حل خود (به عنوان مثال ، MyOrg.Crm.Entities) و در هر کجا که لازم باشد ، آن را ارجاع دهید.

افکار نهایی

این که آیا شما در حال ساخت افزونه ها ، برنامه های کنسول یا خدمات ادغام هستید ، کلاس های محدود اولیه کار با مدل های داده Dynamics 365 را ساده می کنند. اما مانند هر تولید کد خودکار ، همه چیز می تواند شکسته شود. برای جلوگیری از مشکلات مشترک ، این اصلاحات را در ابزار خود نگه دارید.


برای راهنمایی های بیشتر در مورد Dynamics 365 ، Power Platform و DevOps کار را دنبال کنید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا