من الممكن إنشاء مشروع Visual Studio مع إخراج نوع من "أحد" ؟
-
07-07-2019 - |
سؤال
أنا باستخدام Visual Studio 2008 ترغب في خلق نوع من الحاويات المشروع الذي يحمل عدد من DLL التي يجب أن تكون مثبتة مع الحل.أريد لها أن تكون في مشروع منفصل بحيث يمكن تركيبها بسهولة إلى حل كمجموعة.
أنا خلقت مشروع فارغ استدعاء الاختبار ، وأضاف DLL إلى ذلك مع بناء عمل "المحتوى" ، إلى "نسخ دائما".أن كل شيء يعمل تماما كما أريد.المشكلة هي أنه إذا أنا وضعت مشروع اختبار نوع الإخراج إلى "تطبيق وحدة التحكم" أو "ويندوز" أنه لن تبني لأنه لا يوجد نقطة الدخول.إذا كنت تعيين نوع الإخراج إلى "مكتبة الفئات" ، فإنه يبني ولكن أنا في نهاية المطاف مع إضافية TEST.DLL الملفات التي لا تريد حقا.
هناك على أية حال إلى نوع من تعيين نوع الإخراج إلى "أحد" ؟ أريد بناء إجراءات تأخذ مكان (حتى بلدي DLL الحصول على نسخ) ولكن لا أريد دمية الدرجة الجمعية التي تم إنشاؤها.أي أفكار ؟
وذلك بفضل!
المحلول
الافتراضات التالية خطوة بخطوة دليل:
دعونا نفترض أن لديك حل مع اثنين من المشاريع:
Main
:الرئيسي الخاص بك (البدء) المشروع.BundledDLLs
:مكتبة المشروع الذي يحتوي على.dll
s التي ينبغي أن ينتهي في المشروع الرئيسي هو دليل الإخراج.
Step-by-step دليل:
أسهل طريقة لتحقيق هدفك داخل Visual Studio وربما التالية:
إضافة كافة
.dll
sBundledDLLs
و تعيين نسخ إلى دليل الإخراج إلى نسخ إذا أحدث.ويتم ذلك في مستكشف المشاريع و خصائص يقوم نظام ويندوز.
تكوين
BundledDLLs
's دليل الإخراج أن تكون مطابقةMain
's دليل الإخراج.هذا يمكن القيام به في بناء التبويب
BundledDLL
's خصائص المشروع الصفحة.إدخال شيء ما مثل التالية في إخراج المسار مربع نص:..\Main\bin\Debug
إعداد
BundledDLLs
كما تبعيةMain
.لا إضافة
BundledDLLs
كما مرجع مشروع إلىMain
, كما يمكنك عادة ربما ، بدلا من, استخدام تبعيات المشروع مربع الحوار .هذا وسوف اقول بناء أداة كلماMain
هو مبني ،BundledDLLs
يجب أن تكون مبنية الأولى.القيام بذلك عن طريق النقر بزر الماوس الأيمن على
Main
عقدة المشروع لفتح قائمة السياق ؛ حدد تبعيات المشروع... من هناك.في الآن فتح مربع الحوار حدد أولاMain
من القائمة المنسدلة القائمة ؛ ثم تحققBundledDLLs
في المشاريع القائمة أدناه.BundledDLLs
هي الآن مسجلة باسم تبعيةMain
.P. S.: عيب واحد من لا وجود صريح الجمعية المرجعية في
Main
هو أن بعض الأدوات قد لا تتعرف على التبعية.على سبيل المثال ، نشر ClickOnce قد لا تعمل بشكل صحيح.إضافة حدث بعد البناء على
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 نوفولو"> مجلد الحل . يمكن للمرء أن المشاريع الخاصة بك يكون لها عمل البنية التي تقوم على التقليد، إلا أنها لن تكون في المشروع، فإنها لن تحاول "بناء".