سؤال

أنا أستخدم Subsonic 3 (وضع ActivereCord) لإنشاء الكود الخاص بـ DAL. يستخدم ملفات T4 Templates (.tt) التي بمجرد حفظها ، قم بإنشاء الكود لك.

أريد أتمتة هذا كجزء من بناء Nant الخاص بي ، لكن لا يمكنني الحصول على هذا للعمل. أعلم أن MS يوفر أداة تسمى TextTransform لإنشاء الكود من قوالب T4 ، ولكن في حالة القوالب دون الصوت ، لا يبدو أن هذا يعمل - أعتقد أن القوالب تضع بعض الافتراضات حول القالب الذي يتم تشغيله من داخل Visual Studio ، الذي لا يبدو أنه يعمل من سطر الأوامر. الخطأ الذي أحصل عليه عندما أحاول تشغيله ضد ActivereCord.tt هو:

Subonic ActivereCord.tt (0،0): خطأ: تشغيل التحول: System.InvalIdcastexception: غير قادر على إلقاء كائن من النوع "microsoft.visualstudio.texttemplating.commandline.commandlinehost" من أجل الكتابة. في microsoft.visualstudio.texttemplating3d54bbced2424853b667e74a81b9089b. endrendtextTransformation.getCurrentProject () في C: user matt.roberts appdata loc al temp subonic settings.ttinclude: line 103 at microsoft.visualstudio.texttemplating3d54bbced2424853b667e74a81b90899089089089089089089089089089081b. endrendtextTransformation.getConnectionString (ConnectionStringName) في c: u sers matt.roberts appdata local temp subonic settings.ttinclude: line 51 at microsoft.visualstudio.textTemplating3d54bbced24853b66e7491b66e74. cendertexttransformation.get_connectionstring () في c: user matt.roberts appdata local temp subonic settings.ttinclude: line 87

هل تمكن أي شخص من أتمتة هذا الجيل؟

شكرًا

غير لامع.

هل كانت مفيدة؟

المحلول

كتبت إدخال مدونة يغطي هذه الأرض إلى حد ما:

خيارات تشغيل قوالب T4 من .NET Code

إن القيام بما تحاول القيام به سيتطلب بعض الجراحة على قوالب T4 دون الصوت. على وجه التحديد ، سيتعين عليك (الحد الأدنى) استبدال جميع الإشارات إلى Envdte.dte بشيء لا يتطلب تشغيل Visual Studio. قد يكون ذلك بسيطًا مثل الترميز الصعب لبعض المسارات و/أو معلومات التكوين في قوالب T4 الخاصة بك إذا كنت ترغب في "العمل".

من المهم أن تتذكر أن قوالب T4 عبارة عن غلاف رفيع إلى حد ما حول .NET Code. إذا كان بإمكانك القيام بذلك من .NET ، يمكنك على الأرجح القيام بذلك من T4 ، عليك فقط أن تفهم كيفية العمل ضمن مجموعة مختلفة من القيود التي يوفرها T4. تتصرف "مضيفات" مختلفة T4 (مثل Visual Studio vs. TextTransform.exe) بطرق مختلفة ولأن قالب T4 يعمل بشكل جيد تحت مضيف واحد لا يعني أنه سيعمل بشكل جيد تحت مضيف آخر.

نصائح أخرى

يجب تشغيل sett.ttinclude داخل مشروع Visual Studio ، إذا كنت ترغب في التشغيل من سطر الأوامر ، فسيتعين عليك إعطاء ملف الإعدادات سلسلة الاتصال بدلاً من الإشارة إليها في ملفات التكوين ، فقد يتعين عليك أيضًا تعيين ملف مسار المشروع.

أنت تراه تسمي هذا:

string GetConnectionString(string connectionStringName){
    var _CurrentProject = GetCurrentProject();

    string result="";
    ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();
    configFile.ExeConfigFilename = GetConfigPath();

ربما هذا هو المكان الذي تنبع فيه المشكلة ، لذلك إذا قمت بتعيينها باليد ، فيمكنك حل Oproblem بعد ذلك

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top