البصرية ستوديو 2008 لا تعترف امدا التعبير في بناء الجملة

StackOverflow https://stackoverflow.com/questions/402313

سؤال

ولقد قمت مؤخرا ترقية مشروع تطبيق ويب (وكذلك بعض المشاريع المعتمدة) من صافي 2.0 إلى 3.5. NET باستخدام المدمج في أداة التحويل. وتعمل كل شيء من هذا القبيل فضلا عن استخدام MS AJAX 3.5 مقابل المكتبات MS AJAX الخارجية في 2.0.

وتحدث مشكلتي عندما حاولت استخدام بناء الجملة جديد التعبير امدا. فإن المجمع لا تعترف امدا التعبير كما جملة صالح. يتم تعيين النسخة إطار العمل المستهدف إلى 3.5 في جميع المشاريع في solution.I كان أيضا قادرا على استخدام بنجاح امدا التعبير في مشروع مكتبة في نفس الحل.

وهذا هو التعليمات البرمجية التي يتم إعطائي الخطأ. لا شيء خاص جدا.

ObjectFactory.Initialize(x => 
        {
            x.ForRequestedType<IUnitIdSequencingService>().TheDefaultIsConcreteType<UnitIdSequencingService>();
            x.ForRequestedType<IGadgetDAO>().TheDefault.Is.OfConcreteType<GadgetDAO>().WithCtorArg("instance").EqualToAppSetting("OSHAInspectionManager");

        });

والأخطاء المحددة أنا على الحصول على ما يلي:

Error   102 Invalid expression term '>' D:\projects\bohlco\pmr\PMR\Web\App_Code\Bootstrapper.cs 13  41  D:\...\Web\

وأي مساعدة سيكون موضع تقدير كبير. لقد تم البحث جوجل مع القليل من الحظ

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

المحلول

وإذا كان أي من الصفحات يتم جمعها ASP.NET (أي لم تكن قبل تجميع WAP)، ثم ستحتاج للتأكد من أن ASP.NET يعرف عن مترجم C # 3.0 (.NET 3.5) . ضمان يلي في web.config:

<system.codedom>
   <compilers>
      <compiler language="c#;cs;csharp"
            extension=".cs"
            warningLevel="4"
            type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=
         <providerOption name="CompilerVersion" value="v3.5"/>
         <providerOption name="WarnAsError" value="false"/>
      </compiler>
   </compliers>
</system.codedom>

وأيضا، إذا كنت تستضيف في IIS، تأكد من أن يتم تعيين المجلد الصحيح كتطبيق، وأنها تستخدم v2.blah ASP.NET (لا v1.1.blah).

نصائح أخرى

وليس لدي خبرة كبيرة مع أداة تحويل VS 2008، لكنني أعرف كان غيرها من أدوات تحويل مشروع "القضايا". انصح لك مقارنة الملف .csproj لديك مشروع "تقسيم" لأحد أن يعمل. ربما أداة تحويل اندلعت شيء في المشروع. يمكنك أيضا محاولة إنشاء مشروع جديد والنسخ على جميع الملفات المصدر أيضا.

واثنين من الأطواق تحتاج إلى القفز من خلال إعادة مع المشاريع القائمة المراجع، TBH لقد وجدت أنه من الأسهل لمجرد إنشاء مشروع جديد وإضافة بلدي الملفات المصدر موجودة إلى مشروع جديد.

وأنا التخمين المعلمة إلى الطريقة التي يتم تمرير امدا إلى تقبل مندوب كمعلمة؟

وإذا كان هذا صحيحا فإنك سوف تحتاج للادلاء امدا كنوع معين من مندوب. هذا هو نوع من الخلط ولكن ما تحتاج إلى معرفته هو أن امدا لا يمكن دائما أن يستدل بشكل صحيح لذلك تحتاج إلى ألقها أو تغيير التوقيع طريقة لتقبل أنواع معينة من المندوبين.

وحاول هذا:

ObjectFactory.Initialize((Action<T>)(x => // where T is the typeof x
{
    // ...
}));

وأيضا هل يمكن أن محاولة جعل بعض الزائدة للتهيئة لقبول أنواع معينة من المندوبين (مثل العمل).

إذا طريقتك لا يقبل نوع معين من نوع مندوب من يمكنك تجاهل هذه الإجابة:)

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