راهنمای عیب یابی برای توسعه دهندگان با چالش هایی با 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 کار را دنبال کنید.