مشكلة التبعية مع MSBuild 4.0 عند القيام Dllimport من C# إلى مكتبة C ++ غير المدارة

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

سؤال

تم تكريم الاعتماد بشكل صريح في VS2010 بين مشروع C ++ غير المُدار ومشروع C# في VS2010 ، ولكن يتم تجاهل التبعية في MSBuild 4.0.

من المستحيل إضافة إشارة إلى مشروع C ++ غير المدير من مشروع C# ، AFAIK.

كيف يمكنني ضمان ترتيب الإنشاء الصحيح إذا كان الحل يحتوي على مشاريع غير مُدارة ومدارة؟

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

المحلول

MSBuild لديه خطأ فيه ولا تكريم بشكل صحيح تبعيات المشروع المضافة على مستوى الحل. ألق نظرة على http://social.msdn.microsoft.com/forums/en-us/msbuild/thread/80cc6447-b720-4806-8395-7c257b207613/ و https://connect.microsoft.com/visualstudio/feedback/details/613284/msbuild-4-does-not-respect-build-drid-when-building-a-solution

يشير النشر من قبل Microsoft على صفحة Connect إلى أن خطأ في الإصدار 64 بت من MSBuild. حاول التبديل إلى الإصدار 32 بت لمعرفة ما إذا كان ذلك يحل المشكلة.

إذا لم تتمكن من فعل ذلك ، أو لا يعمل ، فهناك خياران آخران. أيا منهما مثالي.

سيكون الخيار الأول هو تحرير ملف SLN يدويًا وتغيير الطلب الذي تظهره المشاريع في الملف لمطابقة ترتيب الإنشاء الذي تريده. أتصور أن حل Victor سيكون فكرة أفضل بكثير ، لأن التغييرات الإضافية في ملف الحل قد تنتهي في كتابة التغييرات مرة أخرى.

سيكون الخيار الثاني هو تصدير MSBuild "Metaproject" يدويًا للحل وتحرير ترتيب الإنشاء مباشرة وإضافة أي تخصيصات أخرى تحتاجها. من ما قرأته ، حتى في Microsoft ، لا يقومون بتجميع حلول "Dogfood" - بدلاً من ذلك ، يتجنبونها تمامًا أثناء البناء واستخدام ملفات MSBuild مخصصة بدلاً من ذلك.

لإنشاء metaproj ، قم بتعيين متغير البيئة MSBuildEmitsolution إلى 1. بعد تشغيل MSBuild على الحل ويجب أن ترى ملف ".Metaproj" في نفس الدليل - يحتوي على البرنامج النصي الذي يولد MSBuild في الذاكرة لتجميع الحل. يجب أن تكون قادرًا على إجراء التعديلات اللازمة ، والتحقق منها ، ثم قم بتعيين خادم الإنشاء لتجميعه.

سوف تختفي المشكلة في الإصدار التالي من Visual Studio. تحتوي صفحة Microsoft Connect على منشور من Microsoft أنه سيتم إصلاحه في الإصدار التالي ، والشائعات تجعلها تتخلص من ملفات .sln واستبدالها بمشاريع MSBuild المناسبة.

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