من الممكن إنشاء مشروع Visual Studio مع إخراج نوع من "أحد" ؟

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

سؤال

أنا باستخدام Visual Studio 2008 ترغب في خلق نوع من الحاويات المشروع الذي يحمل عدد من DLL التي يجب أن تكون مثبتة مع الحل.أريد لها أن تكون في مشروع منفصل بحيث يمكن تركيبها بسهولة إلى حل كمجموعة.

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

هناك على أية حال إلى نوع من تعيين نوع الإخراج إلى "أحد" ؟ أريد بناء إجراءات تأخذ مكان (حتى بلدي DLL الحصول على نسخ) ولكن لا أريد دمية الدرجة الجمعية التي تم إنشاؤها.أي أفكار ؟

وذلك بفضل!

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

المحلول

الافتراضات التالية خطوة بخطوة دليل:

دعونا نفترض أن لديك حل مع اثنين من المشاريع:

  • Main:الرئيسي الخاص بك (البدء) المشروع.
  • BundledDLLs:مكتبة المشروع الذي يحتوي على .dlls التي ينبغي أن ينتهي في المشروع الرئيسي هو دليل الإخراج.

Step-by-step دليل:

أسهل طريقة لتحقيق هدفك داخل Visual Studio وربما التالية:

  1. إضافة كافة .dlls BundledDLLs و تعيين نسخ إلى دليل الإخراج إلى نسخ إذا أحدث.

    ويتم ذلك في مستكشف المشاريع و خصائص يقوم نظام ويندوز.

  2. تكوين BundledDLLs's دليل الإخراج أن تكون مطابقة Main's دليل الإخراج.

    هذا يمكن القيام به في بناء التبويب BundledDLL's خصائص المشروع الصفحة.إدخال شيء ما مثل التالية في إخراج المسار مربع نص:

    ..\Main\bin\Debug
    
  3. إعداد BundledDLLs كما تبعية Main.

    لا إضافة BundledDLLs كما مرجع مشروع إلى Main, كما يمكنك عادة ربما ، بدلا من, استخدام تبعيات المشروع مربع الحوار .هذا وسوف اقول بناء أداة كلما Main هو مبني ، BundledDLLs يجب أن تكون مبنية الأولى.

    القيام بذلك عن طريق النقر بزر الماوس الأيمن على Main عقدة المشروع لفتح قائمة السياق ؛ حدد تبعيات المشروع... من هناك.في الآن فتح مربع الحوار حدد أولا Main من القائمة المنسدلة القائمة ؛ ثم تحقق BundledDLLs في المشاريع القائمة أدناه. BundledDLLs هي الآن مسجلة باسم تبعية Main.

    P. S.: عيب واحد من لا وجود صريح الجمعية المرجعية في Main هو أن بعض الأدوات قد لا تتعرف على التبعية.على سبيل المثال ، نشر ClickOnce قد لا تعمل بشكل صحيح.

  4. إضافة حدث بعد البناء على BundledDLLs أن يحذف زائدة BundledDLLs.dll.

    كما قلت لك لا أريد و لا حاجة ، دمية الإخراج التي تم إنشاؤها عندما BundledDLLs بنيت.إضافة لذلك بعد بناء الحدث ببساطة حذف هذه .dll مرة واحدة تم إنشاؤها.

    فتح بناء الأحداث في علامة التبويب BundledDLLs's خصائص المشروع صفحة إدخال شيء ما مثل التالية في ما بعد بناء النص:

    DEL "$(TargetDir)\$(TargetName).*"
    

    (في حال كنت أتساءل:السبب أنك لم تضيف هذا المشروع كمشروع إشارة إلى Main في وقت سابق لأنه إذا كنت قد فعلت ذلك ، Main أن تبحث عن BundledDLLs.dll, التي لن تكون قادرة على العثور منذ كنت في الواقع لا تريد مثل هذا الملف إلى توليد.)

    P. S.: عيب واحد من إضافة هذه الوظيفة-بناء الخطوة التي قد تتداخل مع تدريجي يبني.إذا كان المشروع الخاص بك يبقى الحصول على معاد من الصفر بعد هذا ، قد يكون من الأفضل إيقاف إزالة بعد خطوة بناء والعيش مع اضافية BundledDLLs.dll في الحل الخاص بك هو دليل الإخراج.

نصائح أخرى

وثمة خيار آخر هو استخدام makefile المشروع الذي لا يتطلب منك بناء/رابط أي شيء.

في خصائص المشروع (انقر بزر الماوس الأيمن الملكية في "مستكشف الحلول" ثم انقر فوق "خصائص") ، في إطار "خصائص تكوين" ثم "العامة" ، اختر "Makefile" من "نوع التكوين" القائمة المنسدلة.بناء إخراج سوف تشمل تحذير "الملكية 'NMakeBuildCommandLine' لا توجد تخطي" ولكن بناء تنجح دون بناء أي dll/exe/.... الخ

في حين إجابات أخرى هنا قد الأفضل لمعالجة حاجة معينة ، مع تحديد makefile أكثر مباشرة يجيب على السؤال عنوان "من الممكن إنشاء مشروع Visual Studio مع نوع الإخراج من لا شيء؟" آمل أن يكون هذا هو مفيد للأشخاص الذين google شيء بهذا المعنى و الأرض هنا.

الفضل يعود إلى Xeek في #winapi freenode irc قناة لتقاسم هذه نصيحة.

وبدلا من وضعها في المشروع، يمكنك وضع الملفات في <لأ href = "http://msdn.microsoft.com/en-us/library/haytww03٪28VS.80٪29.aspx" يختلط = "noreferrer نوفولو"> مجلد الحل . يمكن للمرء أن المشاريع الخاصة بك يكون لها عمل البنية التي تقوم على التقليد، إلا أنها لن تكون في المشروع، فإنها لن تحاول "بناء".

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